分享技术 · 探索极限 · Code is Art
数据库 发布 2024-05-11 844 阅读 约 2 分钟阅读

MySQL 5.7 升级到 MySQL 8.0 实战记录

记录 Docker 环境中从 MySQL 5.7 升级到 MySQL 8.0 的核心步骤,包括数据目录备份、镜像升级、用户认证插件调整和重启验证。

这次记录的是将 Docker 中运行的 MySQL 5.7 升级到 MySQL 8.0 的过程。整体思路是先完整备份数据目录,再切换镜像版本,最后处理用户认证插件兼容问题。

升级步骤

  1. 关闭正在运行的 MySQL 容器。
  2. 复制并备份整个 MySQL 数据目录。
  3. 将镜像版本更新为 mysql:8.0
  4. 启动容器,等待 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 '**********';

如果密码强度不符合安全规范,可以调整密码策略,或者直接使用包含大写字母、小写字母、数字和符号的强密码。

结论

重启服务并确认日志无异常后,升级完成。生产环境执行前务必先做完整备份,并在测试环境验证业务连接兼容性。

发表回复