MySQL(Docker版)小版本升级
MySQL(Docker版)小版本升级
背景
运维扫描出漏洞,Oracle MySQL安全漏洞(CVE-2025-21521),Oracle MySQL Kerberos 安全漏洞(CVE-2024-37371),要求限期解决。
准备工作
1.查看MySQL 版本
docker ps | grep mysql 得到当前版本是 8.0.37
2.检索漏洞信息
直接查看漏洞报告,确定处理版本 
判断得到版本升级至 8.0.40 及以上即可。
3.去MySQL官网了解8.0.x 最新版本
8.0.46
4.查看容器运行命令
runlike 容器编号
升级处理
1. 停容器(必须先停再备份,否则 data 目录文件不一致)
docker stop mysql8-server
2. 备份整个目录
tar -zcvf /home/mysql_vol_backup_$(date +%Y%m%d).tar.gz /home/docker_volumes/mysql
3. 确认备份包大小正常(别是空包)
ls -lh /home/mysql_vol_backup_*.tar.gz
4. 拉最新 8.0 镜像
docker pull docker.1ms.run/mysql:8.0.46
5. 删除旧容器(不删数据卷,只删容器实例)
docker rm mysql8-server
6. 用原来的 runlike 命令跑新容器,只改镜像 tag
docker run -d --name=mysql8-server --hostname=mysql8-server \
--volume /home/docker_volumes/mysql/init/init.sql:/docker-entrypoint-initdb.d/init.sql \
--volume /home/docker_volumes/mysql/conf:/etc/mysql/conf.d \
--volume /home/docker_volumes/mysql/data:/var/lib/mysql \
--volume /home/docker_volumes/mysql/logs:/var/log/mysql \
--env=MYSQL_PASSWORD=123456Aa \
--env=TZ=Asia/Shanghai \
--env=MYSQL_ROOT_PASSWORD=123456Aa \
--env=MYSQL_USER=nepsp \
--network=deployres_nepsp-network \
-p 3306:3306 --expose=33060 \
--restart=unless-stopped \
docker.1ms.run/library/mysql:8.0.46 \
--character-set-server=utf8mb4 \
--collation-server=utf8mb4_unicode_ci \
--lower_case_table_names=1 \
--explicit_defaults_for_timestamp=17. 看日志确认启动成功
docker logs -f mysql8-server
8. 验证版本和数据
docker exec mysql8-server mysql -uroot -p123456Aa -e "SELECT VERSION(); SHOW DATABASES;"