这是MySQL 8.0默认使用caching_sha2_password认证插件,而PHP 7.4(尤其Windows下XAMPP/WampServer等旧版)默认libmysql驱动不支持该协议,导致连接初期即报错2054;根本解决法是执行ALTER USER ... IDENTIFIED WITH mysql_native_password强制切换用户认证方式。

PHP 7.4 连 MySQL 8.0 报错 Authentication plugin 'caching_sha2_password' cannot be loaded 是啥意思
这不是 PHP 写错了,也不是密码输错了,是 MySQL 8.0 默认用了一种新认证方式 caching_sha2_password,而 PHP 7.4(尤其 Windows 下的 XAMPP/WampServer 或旧编译版)默认用的 libmysql 驱动压根不认识它。连接刚建立、还没到输密码那步就直接拒了。
现象很典型:mysqli::__construct(): The server requested authentication method unknown to the client 或 PDO::__construct(): SQLSTATE[HY000] [2054] The server requested authentication method unknown —— 错误码 2054 就是这个原因的“身份证”。
ALTER USER ... IDENTIFIED WITH mysql_native_password 是最直接的修复方式
不需要改 PHP、不升级扩展、不碰配置文件,只要让出问题的那个 MySQL 用户换回老认证插件就行。操作快,见效快,适合开发和测试环境。
- 先用 root 登进 MySQL:
mysql -u root -p - 执行(把
'user'和'password'换成你实际用的):ALTER USER 'user'@'%' IDENTIFIED WITH mysql_native_password BY 'password';
- 别漏掉这句,否则权限不生效:
FLUSH PRIVILEGES;
- 如果用户是
'root'@'localhost',就把'%'换成'localhost';注意@后面的主机名必须完全一致,'root'@'127.0.0.1'和'root'@'localhost'是两个不同用户
为什么改 my.cnf 里的 default_authentication_plugin=mysql_native_password 不总管用
这个配置只影响「新建用户」,对已存在的用户(尤其是安装 MySQL 8.0 时自动生成的 root)完全无效。很多人加了配置、重启了 mysqld,结果还是连不上 —— 因为老用户认证插件没变。
另外要注意:
- Linux 下配置文件可能是
/etc/my.cnf或/etc/mysql/mysql.conf.d/mysqld.cnf,得找对位置 - Windows 下通常是
my.ini,且必须在[mysqld]段落下添加 - 改完必须重启 MySQL 服务,
systemctl restart mysqld或service mysql restart - 运行
SELECT host,user,plugin FROM mysql.user;可以确认当前用户的plugin列是不是已经变成mysql_native_password
PHP 侧能做但不推荐的“绕过”尝试
有人试过在 PDO DSN 里加 ?charset=utf8mb4、设 PDO::MYSQL_ATTR_SSL_MODE,甚至强制指定 socket 路径 —— 这些对 2054 错误完全无效。因为认证发生在连接建立初期,字符集、SSL、初始化命令都是后续阶段的事。
真正起作用的客户端适配,需要同时满足三个条件:
- PHP 使用的是
mysqlnd驱动(不是libmysql),可通过phpinfo()查看是否有mysqlnd行 - PHP 版本 ≥ 7.4.30(早期 7.4.x 对
caching_sha2_password支持不稳定) - MySQL 服务端开启 TLS 且客户端显式启用(否则即使支持也会 fallback 失败)
所以,除非你明确控制服务端 TLS 配置且能验证 mysqlnd 已启用,否则别在 PHP 侧硬扛这个认证问题 —— 改用户插件是最省心、兼容性最好的路径。
最后提醒一句:云数据库(如阿里云 RDS、腾讯云 CDB)通常不开放 ALTER USER 权限,也不允许改 my.cnf,这种情况下只能联系厂商确认是否提供兼容模式,或换用支持 caching_sha2_password 的驱动版本。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











