前言
PHP连接 Mysql 8 报错:The server requested authentication method unknown to the client
原因
- Mysql 8 的密码验证插件由之前的
mysql_native_password
变为了caching_sha2_password
,导致PHP不支持
继续踩坑
- 网上说用这种方式修改密码验证插件,但是仍然报错::
Operation ALTER USER failed for 'root'@'localhost'
<password>
:密码
1
| ALTER USER 'root'@'localhost' IDENTIFIED BY '<password>' PASSWORD EXPIRE NEVER;
|
1
| ALTER USER root@localhost IDENTIFIED WITH mysql_native_password BY '<password>';
|
最终解决问题
- 将密码验证插件改回
mysql_native_password
1 2
| mysql> USE mysql; mysql> UPDATE user SET plugin='mysql_native_password' WHERE user='root';
|
查看密码验证方式
1
| mysql> SELECT host,user,plugin FROM user;
|
完成
后记
- 修改完密码验证插件
mysql_native_password
后,虽然可以使用mysqli_connect()
函数连接数据库,但是报密码出错(我使用了正确的密码),同时直接用密码登陆mysql客户端也报错,最终放弃了,费了九牛二虎之力才把无法登陆客户端的mysql修改了密码
后来的解决方案
- 从原本的PHP7改为使用高版本PHP8问题就解决了
参考文献
简书——囧囧的猪
CSDN——codingXT