一、背景
从MySQL 5.6到5.7,再到8.0,版本的跳跃不可谓不大。安装、配置的差别也不可谓不大,特此备忘。
二、过程
(1)获取MySQL 8.0社区版(MySQL Community Server)
从 官网 字样 “MySQL Community Server” 的链接进入到下载页。
选择8.0.xx(截至2023-9-1,最新版本为34)的zip文件即可(形如:mysql-8.0.34-winx64.zip)。
(2)安装
解压zip文件到指定位置(推荐为非系统盘的根目录)即可。
两个环境变量设置:
① 新建MYSQL_HOME变量,并设置为MySQL安装文件夹路径。
② 将【%MYSQL_HOME%\bin】加入到PATH变量中。
(3)配置
配置文件(.ini、.cnf等)主要参考官方文档中有关配置文件章节。
配置文件名规则:先是my.ini,再是my.cnf;检测位置规则:先是C:\,再是安装文件夹。
8.0版本安装包没有提供配置文件模板,需自行创建,推荐在安装文件夹中创建my.ini文件。
常见配置项说明如下,配置文件模板(my.ini)附后。
选项组 | 选项 | 说明 | 备注 |
---|---|---|---|
mysqld | basedir | MySQL安装文件夹 | 字符串, |
mysqld | datadir | 数据文件夹 | 字符串, |
mysqld | port | 服务端口 | 整形,默认值3306,取值范围 [0, 65535] |
mysqld | max_connections | 同时允许的最大客户端连接数 | 整形,默认值151,取值范围 [1,100000] |
mysqld | max_connect_errors | 最大连接失败数 | 整形,默认值100,取值范围 [1,18446744073709551615] |
mysqld | character-set-server | 服务(mysqld程序)的默认字符集 | 字符串,默认值utf8mb4 |
mysqld | default-storage-engine | 数据表的默认存储引擎 | 枚举,默认值InnoDB |
mysqld | default_authentication_plugin | 默认的身份验证插件 | 枚举,默认值caching_sha2_password, 其他值:mysql_native_password 和 sha256_password |
mysql | default-character-set | mysql(命令行客户端)默认的字符集 | 字符串, |
client | default-character-set | 客户端(C API)默认的字符集 | 字符串, |
client | port | 客户端(C API)默认的连接端口 | 整形, |
(4)初始化、启动 服务
mysqld --initialize --console # 初始化并获取root初始密码
mysqld --install <服务名> # 安装服务,默认服务名为mysql,可以指定,例如:mysql80
net start <服务名> # 启动服务
(5)修改root账户密码
mysql -u root -p #进入mysql命令行工具,密码为root初始密码ALERT USER root@localhost IDENTIFIED BY '<新密码>';
exit # 退出命令行工具net stop <服务名> # 重启mysql服务
net start <服务名>
三、问题
(1)允许远程主机连接服务
默认MySQL不允许远程主机连接。可修改:
mysql -u root -p #进入mysql命令行工具use mysql; # 选择系统库mysql
select host from user where user='root'; # 查看允许主机
update user set host = '%' where user='root';
flush privileges; # 提交
select host from user where user='root'; # 验证查看
exit # 退出命令行工具net stop <服务名> # 重启mysql服务
net start <服务名>
(2)数据库字符集修改
早期默认字符集为utf8,现在几乎统一为utf8mb4(8.0的默认值即utf8mb4)。
如有修改,可直接修改配置文件的项【character-set-server】即可。需重启服务。
四、结论
MySQL 8.0相对5.6和5.7等早期版本,安装、配置的难点还是在配置文件。
而配置项大致分为3组:服务端(mysqld)、mysql命令行(mysql)和客户端(client)。
对应的配置项(变量)也各有定义:
① Server System Variables
② mysql Client Options
③ mysql_options
五、其他
(1)my.ini配置模板
[mysqld]# 设置服务端端口
port=3306
# $MYSQL_HOME
basedir=D:\mysql
# 数据文件夹
datadir=D:\mysql\DATA
# 最大连接数
max_connections=200
# 最大连接失败次数
max_connect_errors=10
# 服务端字符集
character-set-server=utf8mb4
# 默认存储引擎
default-storage-engine=INNODB
# 默认认证插件
default_authentication_plugin=mysql_native_password[mysql]
# 客户端默认字符集
default-character-set=utf8[client]
# 客户端连接端口
port=3306
# 客户端默认字符集
default-character-set=utf8
(2)数据库创建模板
CREATE DATABASE `<数据库名>` CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_unicode_ci';
如图所示: