Skip to content

MySQL(Docker版)小版本升级

约 367 字大约 1 分钟

MySQL漏洞Docker

2026-10-28

MySQL(Docker版)小版本升级

背景

运维扫描出漏洞,Oracle MySQL安全漏洞(CVE-2025-21521),Oracle MySQL Kerberos 安全漏洞(CVE-2024-37371),要求限期解决。

准备工作

1.查看MySQL 版本

docker ps | grep mysql 得到当前版本是 8.0.37

2.检索漏洞信息

直接查看漏洞报告,确定处理版本 image-20261029101456762

判断得到版本升级至 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=1

7. 看日志确认启动成功

docker logs -f mysql8-server

8. 验证版本和数据
docker exec mysql8-server mysql -uroot -p123456Aa -e "SELECT VERSION(); SHOW DATABASES;"