案例 升级 MySQL 9.7 前先把认证迁走:mysql_native_password 已被彻底移除

2026-09-02 21:05:18

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

或者直接无法完成认证。升级前必须做两件事:

  1. 把所有 mysql_native_password 用户迁移到 caching_sha2_password
ALTER USER 'u'@'%' IDENTIFIED WITH caching_sha2_password BY '...';
  1. 同步更新驱动/客户端到支持 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 之后,再走升级流程。

复制全文 生成海报 MySQL 运维 版本升级 认证

推荐文章

程序员茄子在线接单