最近升级了mysql到最新版本,发现Laravel和sequel pro都连接不上Mysql了

SQLSTATE[HY000] [2054] The server requested authentication method unknown to the client (2054);
​
PDO::__construct(): The server requested authentication method unknown to the client [caching_sha2_password] (0);
问题原因
  • 老版本的密码认证插件:mysql_native_password
  • 新版本(8.0以上)的密码认证插件改为:caching_sha2_password 从而导致一些语言或工具不支持
解决办法

将密码认证插件改回老版本:mysql_native_password

实现

1、因为我用的MAC,windows的应该差不多。如果不知道my.cnf文件在哪里,可以使用find查找。

sudo vim /usr/local/etc/my.cnf

2、按 i 键进入编辑模式,将以下内容复制到 [mysqld] 下 (密码认证插件改为旧版)

[mysqld]
default_authentication_plugin=mysql_native_password

3、保存退出

4、切换用户(root)的验证方式。先登录数据库

mysql -u root -p

5、依次执行以下命令

ALTER USER 'root'@'localhost' IDENTIFIED BY 'your password' PASSWORD EXPIRE NEVER;
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your password';
FLUSH PRIVILEGES;

可能有的同学会遇到这个问题:

ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

这是因为密码策略不符合造成的,我们需要更换密码策略

执行以下命令查看策略

SHOW VARIABLES LIKE 'validate_password%';

结果如下图:

图1

降低密码验证强度等级,将 validate_password.policy 的全局参数为 LOW 即可,输入以下命令:

set global validate_password.policy=LOW;
图2

此时再运行以上三个命令就OK了
6、完成后重启mysql,就可以使用php或工具连接上了

mysql.server restart

文章来源于互联网:解决连接MySQL时报”The server requested authentication method unknown to the client”错误

发表评论