mysql 8.0 默认身份验证插件是 caching_sha2_password,因其支持 sha-256 哈希、rsa 加密握手及缓存优化以提升安全性;但旧客户端兼容性差,需通过配置文件设置 default_authentication_plugin=mysql_native_password 并重启服务,再对现有用户执行 alter user 切换。

MySQL 8.0 默认身份验证插件为什么是 caching_sha2_password?
MySQL 8.0.4+ 将 caching_sha2_password 设为默认认证插件,替代了旧版的 mysql_native_password。这是出于安全增强考虑:它支持更强的 SHA-256 密码哈希、支持 RSA 密钥对加密握手(尤其在未启用 SSL 时),且缓存验证结果以减少重复计算开销。
但问题在于:很多老客户端(如 MySQL 5.7 客户端、某些 Python 2 的 mysqlclient、旧版 Navicat、甚至部分 JDBC 驱动)不支持该插件,连接时直接报错:Plugin caching_sha2_password could not be loaded 或 Authentication plugin 'caching_sha2_password' cannot be loaded。
如何全局修改默认认证插件为 mysql_native_password?
必须在服务启动前通过配置文件设定,仅靠 SQL 命令无法改变“新用户”的默认插件(ALTER USER 只影响已有用户)。
编辑 MySQL 配置文件(通常是 /etc/my.cnf 或 /etc/mysql/mysql.conf.d/mysqld.cnf),在 [mysqld] 段落下添加:
[mysqld] default_authentication_plugin=mysql_native_password
然后重启 MySQL 服务:
sudo systemctl restart mysqld(RHEL/CentOS)或 sudo systemctl restart mysql(Ubuntu/Debian)
⚠️ 注意:
- 修改后新建用户(如 CREATE USER 'u'@'%' IDENTIFIED BY 'p';)才会默认用 mysql_native_password
- 已有用户不受影响,仍保持原插件,需单独 ALTER USER 更新
- 若配置文件中已存在 default_authentication_plugin 行,直接改值即可,不要重复写
如何为特定用户切换回 mysql_native_password?
即使全局设为 mysql_native_password,也可能需要临时修复某个已存在的、连不上客户端的用户(比如 root 或应用账号)。
执行以下 SQL(需有足够权限,如 root):
ALTER USER 'username'@'host' IDENTIFIED WITH mysql_native_password BY 'password';
常见使用场景包括:
- 刚升级到 MySQL 8.0 后,
root用户无法用旧客户端登录 - 应用部署失败,日志显示认证插件不兼容
- Docker 环境中初始化脚本创建的用户用了默认插件,但容器内 client 不支持
执行后立即生效,无需重启。但注意:
- host 必须精确匹配(如 'root'@'localhost' 和 'root'@'127.0.0.1' 是两个不同用户)
- 如果密码为空,用 IDENTIFIED WITH mysql_native_password(不带 BY)
- 切换后建议用 SELECT plugin FROM mysql.user WHERE user='username' AND host='host'; 确认
为什么只改配置还不够?常见遗漏点
很多人改完 my.cnf 并重启,却发现新用户还是用 caching_sha2_password——大概率是配置没生效。
排查要点:
- 确认修改的是正在运行的 MySQL 实例所加载的配置文件(用
mysql -e "SHOW VARIABLES LIKE 'config_file';"查路径;或mysqld --help --verbose | grep "Default options") - 检查配置文件权限是否导致 MySQL 忽略读取(如被 SELinux 或文件权限阻止)
- 确认没有多个
[mysqld]段落,且default_authentication_plugin写在正确的段落下 - 某些云数据库(如阿里云 RDS、AWS RDS)禁止修改该参数,只能通过
ALTER USER逐个调整用户 - MySQL 8.0.29+ 引入了
caching_sha2_password_auto_generate_rsa_keys,若关闭它又没提供外部密钥,可能间接影响插件行为(一般不用动)
最稳妥的做法:配置文件改 + 重启 + 创建测试用户验证 + 对关键现有用户执行 ALTER USER ——三步缺一不可。











