这次记录的是将 Docker 中运行的 MySQL 5.7 升级到 MySQL 8.0 的过程。整体思路是先完整备份数据目录,再切换镜像版本,最后处理用户认证插件兼容问题。
升级步骤
- 关闭正在运行的 MySQL 容器。
- 复制并备份整个 MySQL 数据目录。
- 将镜像版本更新为
mysql:8.0。 - 启动容器,等待 MySQL 自动升级数据文件。
[System] [MY-013381] [Server] Server upgrade from '50700' to '80037' started.
[System] [MY-013381] [Server] Server upgrade from '50700' to '80037' completed.检查用户认证插件
进入容器并登录 MySQL 后,先查看用户认证插件类型:
USE mysql;
SELECT user, plugin FROM user;如果仍然使用 mysql_native_password,可以按需切换到 caching_sha2_password。升级到更高版本时,默认认证方式和兼容策略会更严格。
ALTER USER 'root'@'localhost' IDENTIFIED WITH 'caching_sha2_password' BY '**********';如果密码强度不符合安全规范,可以调整密码策略,或者直接使用包含大写字母、小写字母、数字和符号的强密码。
结论
重启服务并确认日志无异常后,升级完成。生产环境执行前务必先做完整备份,并在测试环境验证业务连接兼容性。