MySQL 8.0→8.4→9.7 升级要点:mysql_native_password 移除与路径约束
MySQL 发布模型有变动:2026-04-21,MySQL 9.7.0 从 Innovation 转为 LTS;同日发布的 8.0.46 是 8.0 系列最后一个版本,之后 8.0 于 2026-04-30 EOL。官方支持的升级路径是 8.0→8.4 LTS→9.7 LTS,不能跨 LTS 直接升级。
9.7 与 8.4 的认证插件差异
9.7 彻底移除了 mysql_native_password 认证插件。8.4 默认禁用该插件,但可以通过 mysql_native_password=ON 手动开启;9.7 已无此选项。
常见的坑在于老客户端或旧驱动:它们往往只支持 mysql_native_password,不支持 caching_sha2_password(无 CLIENT_PLUGIN_AUTH 能力)。这类客户端连 9.7 会报:
ERROR 2059 (HY000): Authentication plugin 'caching_sha2_password' cannot be loaded
或者直接无法完成认证。升级前必须做两件事:
- 把所有
mysql_native_password用户迁移到caching_sha2_password:
ALTER USER 'u'@'%' IDENTIFIED WITH caching_sha2_password BY '...';
- 同步更新驱动/客户端到支持
CLIENT_PLUGIN_AUTH的版本,否则即使服务端换了插件,老客户端依旧连不上。
版本路径约束
升级顺序不能从 8.0 直接跳 9.7,必须是 8.0→8.4,再从 8.4→9.7。downgrade 同样不支持跨 LTS。规划升级窗口时要把两段升级的时间都算进去,不能指望一次大版本跳跃完成。
自查存量用户
升级前先列出所有使用旧插件的账号,避免遗漏导致升级后部分应用不可用:
SELECT user, host, plugin
FROM mysql.user
WHERE plugin = 'mysql_native_password';
这条查询的结果就是需要逐个迁移的用户清单。确认全部迁移完成、客户端驱动均支持 caching_sha2_password 之后,再走升级流程。