一、需求背景
由于Mysql 5.7在项目中存在被扫描出的漏洞,故考虑升级到MySQL 8以上版本,采用docker进行部署,并适配此前Mysql 5.7配置文件
二、服务部署
1、创建挂载目录
mkdir -p /home2/mysql8/conf
mkdir -p /home2/mysql8/log
mkdir -p /home2/mysql8/data
2、拉取镜像、运行容器
docker run --privileged=true -d -v /etc/localtime:/etc/localtime:ro -v /home2/mysql8/log:/var/log/mysql -v /home2/mysql8/data:/var/lib/mysql -v /home2/mysql8/conf:/etc/mysql/conf.d --name mysql8 -e MYSQL_ROOT_PASSWORD=YinLing_2024 -p 3308:3306 -d mysql:8.0.36
或者参考以下启动命令:
docker run -p 3306:3306 --name mysql --restart=always --privileged=true
-v /usr/local/mysql/log:/var/log/mysql
-v /usr/local/mysql/data:/var/lib/mysql
-v /usr/local/mysql/conf:/etc/mysql/conf.d
-v /etc/localtime:/etc/localtime:ro
-e MYSQL_ROOT_PASSWORD=123456 -d mysql:latest
3、处理报错
1)不区分大小写参数lower_case_table_names导致运行报错:
运行 MySQL 8之前就要修改好,运行之后不支持修改该参数。
2)sql_mode参数导致报错
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ZERO_DATE,NO_ZERO_IN_DA TE,ERROR_FOR_DIVISION_BY_ZERO
原MySQL 5.7中配置如上,8版本可能部分不支持,将其注释掉。
3)query_cache_相关参数报错
报错信息:
2024-01-22T08:49:17.874864+08:00 0
[ERROR] [MY-000067] [Server] unknown variable 'query_cache_limit=1048576'.
MySQL 8.0版本中,query_cache_limit 这个系统变量已经被废弃,不再被支持。
将其注释掉。
#query_cache_limit=1048576
#query_cache_size=1024M
#query_cache_type=OFF
#query_cache_wlock_invalidate=OFF
二、连接测试
mysql -uroot -P3308 -p -h192.168.3.104
1、查询版本信息:SELECT VERSION();
mysql> SELECT VERSION();
+-----------+
| VERSION() |
+-----------+
| 8.0.36 |
+-----------+
1 row in set (0.00 sec)
2、查询是否区分大小写:
SHOW VARIABLES LIKE 'lower_case_table_names';
mysql> SHOW VARIABLES LIKE 'lower_case_table_names';
+------------------------+-------+
| Variable_name | Value |
+------------------------+-------+
| lower_case_table_names | 1 |
+------------------------+-------+
1 row in set (0.01 sec)
根据查询结果,lower_case_table_names的值为1,表示MySQL不区分大小写。如果需要区分大小写,可以将该值设置为0。
3、查询是否开启binlog:
SHOW VARIABLES LIKE 'log_bin';
mysql> SHOW VARIABLES LIKE 'log_bin';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_bin | ON |
+---------------+-------+
1 row in set (0.00 sec)