You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP mysqli_connect连接本地MySQL报错:caching_sha2_password认证方式未知

解决MySQL认证插件错误:authentication method unknown to the client [caching_sha2_password]

嘿,这个问题我之前折腾过好几次,本质原因是MySQL 8.0及以上版本默认启用了caching_sha2_password认证插件,但你的PHP mysqli扩展版本偏旧,不支持这种新的认证方式,所以才会抛出这个错误。下面给你几个实用的解决办法,按优先级排序:

方法1:直接修改目标用户的认证插件(最推荐)

针对你代码里用的user1用户,把它的认证方式改成PHP支持的mysql_native_password就行:

  1. 先用root或有权限的账号登录MySQL终端:
mysql -u root -p
  1. 执行以下SQL语句更新用户配置:
-- 注意:如果user1允许远程连接,把localhost换成%或者指定IP
ALTER USER 'user1'@'localhost' IDENTIFIED WITH mysql_native_password BY 'pass1';
FLUSH PRIVILEGES;

改完之后再跑你的PHP连接代码,基本就能正常连上了。

方法2:全局修改MySQL默认认证插件

如果需要批量处理用户,或者希望新建用户默认用旧认证方式,可以改MySQL的配置文件:

  1. 找到MySQL的配置文件(Linux是/etc/my.cnf或/etc/mysql/my.cnf,Windows是my.ini,一般在MySQL安装目录下),找到[mysqld]段,添加或修改:
[mysqld]
default_authentication_plugin=mysql_native_password
  1. 重启MySQL服务让配置生效:
  • Linux用systemd的话:
sudo systemctl restart mysql
  • Windows直接在服务管理器里找到MySQL服务,右键重启即可。

注意:这个配置只对新建用户生效,已经存在的用户还是得用方法1单独修改。

方法3:升级PHP及mysqli扩展

如果你的PHP版本低于7.4,建议直接把PHP升级到7.4及以上——新版本的mysqli扩展已经原生支持caching_sha2_password插件,升级后不用改任何用户或MySQL配置,直接就能正常连接。

另外提一句,你的代码里注释了user2的配置,确保当前用的user1确实是你在MySQL里配置好的账号哦~

内容的提问来源于stack exchange,提问作者Guti_Haz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 08:27:11