# MySQL 5.7 升级到 MySQL 8.0 实战记录

- 原文地址：https://www.kuddy.cn/archives/152
- 发布时间：2024-05-11 20:33:21
- 更新时间：2026-05-18 02:41:26
- 分类：数据库
- 标签：Docker, MySQL

> 记录 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 '**********';
```

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

## 结论

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