MySQL 8 Windows zip包安装
环境
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为服务名。不输入时,默认为mysql
mysqld --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
Java客户端连接
driverClassName
变为com.mysql.cj.jdbc.Driver
。- 使用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快两倍。
总结
- 环境变量是为了在命令行
CMD
中更加方便使用mysql命令; - 如果有之前有安装过其他版本mysql,记得先卸载并删除服务;
- 安装完记得登录并修改密码,不论是采用空密码还是临时密码;
- 当然,命令行终归是不方便的,现在有很多可视化界面,如: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