使用Docker容器在生产环境部署最新MySQL 8.0.36版本

艺帆风顺 发布于 2025-04-03 68 次阅读


一、需求背景

    由于Mysql 5.7在项目中存在被扫描出的漏洞,故考虑升级到MySQL 8以上版本,采用docker进行部署,并适配此前Mysql 5.7配置文件

二、服务部署

1、创建挂载目录

mkdir -p /home2/mysql8/confmkdir -p /home2/mysql8/logmkdir -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)