PHP连接MYSQL8.0失败,提示[caching_sha2_password]错误解决办法
错误提示:The server requested authentication method unknown to the client [caching_sha2_password]
一、原因
从MySQL 8.0.4开始,MySQL服务器的默认身份验证插件从mysql_native_password更改为caching_sha2_password。相应地,libmysqlclient现在也将caching_sha2_password用作默认身份验证机制。
mysql8的默认密码加密方式是caching_sha2_password,PHP7.4连接mysql的加密方式也为caching_sha2_password,这个地方要注意。
当为了兼容旧版的客户端不只是PHP,还有在主从复制的时候也会有问题,mysql8的认证方式改回了mysql_native_password。如果使用PHP7.4的情况下,这里就会认证报错,因为7.4是caching_sha2_password加密方式,因此这里我可以改用成PHP7.2
二、查看情况
1、在MySQL 8.0 Command Line Client命令窗口,输入密码,
输入use mysql;
输入SELECT Host, User, plugin from user;
可以看出使用的都是caching_sha2_password用作默认身份验证机制(这里的红框,是我解决后的图片,原来4个都是caching_sha2_password)
二、解决方法
1、常见解决方法,直接接着上面的步骤,
先输入 ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';修改权限
再输入FLUSH privileges;刷新权限