环境

Windows 10

下载

下载mysql压缩包的地址:https://dev.mysql.com/downloads/mysql/

这里以 mysql-8.0.12-winx64.zip安装包为例说明安装过程。

安装

如果之前有安装过MySQL服务,需要先删除该服务。以管理员模式打开cmd命令行,执行

sc delete mysql

想查看sc命令的用法,在命令行执行sc就可以了。

1、解压zip包到安装目录

比如我的安装目录是:C:\MyPrograms\mysql-8.0.12-winx64。

2、配置文件

在Windows系统中,MySQL默认的配置文件上安装目录下的my.ini文件。

在安装根目录下添加 my.ini,比如我这里是:C:\MyPrograms\mysql-8.0.12-winx64\my.ini,写入基本配置:

[mysqld]
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin
# These are commonly set, remove the # and set as required.
# set basedir to your installation path
basedir = C:/MyPrograms/mysql-8.0.12-winx64
# set datadir to the location of your data directory
datadir = C:/MyPrograms/mysql-8.0.12-winx64/data
port = 3306
# server_id = .....
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M
sql_mode=ONLY_FULL_GROUP_BY,NO_AUTO_VALUE_ON_ZERO,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION,PIPES_AS_CONCAT,ANSI_QUOTES
character-set-server = utf8mb4
performance_schema_max_table_instances = 600
table_definition_cache = 400
table_open_cache = 256
[mysql]
default-character-set = utf8mb4
[client]
default-character-set = utf8mb4

注意: 
1. 里面的 basedir 是我本地的安装目录,datadir 是我数据库数据文件要存放的位置,各项配置需要根据自己的环境进行配置。其中路径必须使用正斜杠/。 
2. 在MySQL 8中,sql_mode里面不能加入NO_AUTO_CREATE_USER,否则启动报错。

查看所有的配置项,可参考:https://dev.mysql.com/doc/refman/8.0/en/mysqld-option-tables.html

3、配置环境变量

右键计算机 -> 属性 -> 高级系统设置 -> 环境变量

新建系统变量

变量名:MYSQL_HOME变量值:C:\MyPrograms\mysql-8.0.12-winx64

修改Path变量,加入

%MYSQL_HOME%\bin

4、初始化数据库

在MySQL安装目录的 bin 目录下执行命令:

# 生成临时密码mysqld --initialize --console

执行完成后,会打印 root 用户的初始默认密码,比如:

2018-08-15T02:55:43.924361Z 0 [System] [MY-013169] [Server] C:\MyPrograms\mysql-8.0.12-winx64\bin\mysqld.exe (mysqld 8.0.12) initializing of server in progress as process 12040
2018-08-15T02:55:55.962035Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: XCeQtsgMO7-F
2018-08-15T02:56:03.261174Z 0 [System] [MY-013170] [Server] C:\MyPrograms\mysql-8.0.12-winx64\bin\mysqld.exe (mysqld 8.0.12) initializing of server has completed

其中,第3行的XCeQtsgMO7-F就是初始密码,在没有更改密码前,需要记住这个密码,后续登录需要用到。

要是你手贱,关快了,或者没记住,那也没事,删掉初始化的 datadir 目录,再执行一遍初始化命令,又会重新生成的。当然,也可以使用安全工具,强制改密码,用什么方法,自己随意。

还有种方式生成空密码

# 生成空密码mysqld --initialize-insecure --console

参考:https://dev.mysql.com/doc/refman/8.0/en/data-directory-initialization-mysqld.html

5、安装服务

虽然设置了环境变量,但也必须在MySQL安装目录的 bin 目录下,以管理员的身份执行命令,否则生成的服务指向的路径是错误的。

# serviceName为服务名。不输入时,默认为mysqlmysqld --install [服务名]

后面的服务名可以不写,默认的名字为 mysql。当然,如果你的电脑上需要安装多个MySQL服务,就可以用不同的名字区分了,比如 mysql5 和 mysql8。

如果看到下面内容,则证明服务安装成功

Service successfully installed.

6、启动服务

安装完成之后,就可以通过命令net start mysql启动MySQL的服务了。

net start mysql//以下输出证明启动成功MySQL 服务正在启动 ..MySQL 服务已经启动成功。//如果你要关闭的话net stop mysql

参考:https://dev.mysql.com/doc/refman/8.0/en/windows-start-service.html

更改密码和密码认证插件

在MySQL安装目录的 bin 目录下执行命令:

mysql -uroot -p

这时候会提示输入密码,记住了第3步的密码,填入即可登录成功,进入MySQL命令模式。

在MySQL8.0.4以前,执行

SET PASSWORD=PASSWORD('[修改的密码]');

就可以更改密码,但是MySQL8.0.4开始,这样默认是不行的。因为之前,MySQL的密码认证插件是mysql_native_password,而现在使用的是caching_sha2_password

因为当前有很多数据库工具和链接包都不支持caching_sha2_password,为了方便,我暂时还是改回了mysql_native_password认证插件。

在MySQL中执行命令:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'newpassword';

修改密码验证插件,同时修改密码。

如果想默认使用mysql_native_password插件认证,可以在配置文件中配置default_authentication_plugin项。

[mysqld]default_authentication_plugin=mysql_native_password

参考:https://dev.mysql.com/doc/refman/8.0/en/upgrading-from-previous-series.html#upgrade-caching-sha2-password

Java客户端连接

  1. driverClassName变为com.mysql.cj.jdbc.Driver
  2. 使用mysql-connector-java8-bin.jar驱动程序连接MySQL8,报错Could not create connection to database server. Attempted reconnect 3 times. Giving up。这是因为mysql8版本的URL必须加上useSSL 和 serverTimezone。 
    完整的URL例子是jdbc:mysql://localhost:3306/test?useUnicode=true&character_set_server=utf8mb4&useSSL=false&serverTimezone=GMT 或者 jdbc:mysql://localhost:3306/test?useUnicode=true&character_set_server=utf8mb4&useSSL=false&serverTimezone=GMT&autoReconnect=true&failOverReadOnly=false

速度测试

不用测了,官方说MySQL 8 比 MySQL 5快两倍。

总结

  1. 环境变量是为了在命令行CMD中更加方便使用mysql命令;
  2. 如果有之前有安装过其他版本mysql,记得先卸载并删除服务;
  3. 安装完记得登录并修改密码,不论是采用空密码还是临时密码;
  4. 当然,命令行终归是不方便的,现在有很多可视化界面,如:Navicat等。

附、CentOS tar.gz 包安装

wget https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.11-linux-glibc2.12-x86_64.tar.gz
shell> tar zxvf mysql-8.0.11-linux-glibc2.12-x86_64.tar.gz -C /usr/local/
shell> groupadd mysql
shell> useradd -r -g mysql -s /bin/false mysql
shell> cd /usr/local
shell> ln -s mysql-8.0.11-linux-glibc2.12-x86_64 mysql
shell> cd mysql
shell> mkdir mysql-files
shell> chown mysql:mysql mysql-files
shell> chmod 750 mysql-files
shell> bin/mysqld --initialize --user=mysql
shell> bin/mysql_ssl_rsa_setup
shell> bin/mysqld_safe --user=mysql &
# Next command is optional
shell> cp support-files/mysql.server /etc/init.d/mysql.server

发表评论

电子邮件地址不会被公开。 必填项已用*标注