mysql如何处理升级后的身份认证兼容性_mysql_native_password配置
MySQL 8.0升级后老客户端连接报错ERROR 1251因默认认证插件改为caching_sha2_password需对每个现有用户执行ALTER USER ... IDENTIFIED WITH mysql_native_password修改认证方式而非仅配置default_authentication_plugin。MySQL 8.0 升级后连接报错 ERROR 1251: Client does not support authentication protocol这是最典型的症状老客户端比如 MySQL 5.7 客户端、某些 PHP 扩展、旧版 Navicat 或 DBeaver连不上新 MySQL 8.0 实例日志里明确提示不支持认证协议。根本原因是 MySQL 8.0 默认改用 caching_sha2_password 插件而旧客户端只认 mysql_native_password。别急着改全局 default_authentication_plugin —— 它只影响新建用户的默认插件对已有用户无效真正要动的是具体用户的认证方式不是服务端开关如果用 root 连不进得先用 --skip-grant-tables 启动临时绕过验证再改用户插件给指定用户切换回 mysql_native_password 认证必须登录 MySQL哪怕用临时免密方式对每个需要兼容的用户执行 ALTER USER。这不是配置文件开关是数据字典层面的修改。确认当前用户用的什么插件SELECT user, host, plugin FROM mysql.user WHERE user your_user;切换认证方式ALTER USER your_user% IDENTIFIED WITH mysql_native_password BY your_password;强制重载权限FLUSH PRIVILEGES;注意 % 要和创建用户时的 host 完全一致localhost 和 127.0.0.1 是两个不同用户my.cnf 里设 default_authentication_plugin 没用设了 default_authentication_plugin mysql_native_password 确实能让新 CREATE USER 不带 IDENTIFIED WITH 时默认用它但不影响已存在用户也不解决老客户端连不上 root 的问题。很多人配了却没效果就是卡在这儿。 WisPaper 复旦大学研发的AI学术搜索工具5分钟内筛选1000篇论文