【踩坑】PHP连接 Mysql 8 报错

前言

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