The server requested authentication method unknown to the client

php-mysqlnd连接mysql 8.0报错:The server requested authentication method unknown to the client,出现这个问题的原因是因 mysql8.0 引入了新特性 caching_sha2_password,而老版本的php-mysqlnd用的是mysql_native_password加密插件,解决方法如下:

1. 用如下语句查看MySQL当前加密方式

select host,user,plugin from user;

2. 使用命令将root用户修改成mysql_native_password加密模式

update user set plugin='mysql_native_password' where user='root';

3. 配置文件[mysqld]部分

[mysqld]
default_authentication_plugin=mysql_native_password

3. 创建基于native_password的帐号

CREATE USER 'user'@'%' IDENTIFIED WITH mysql_native_password BY 'userpasswd';
GRANT ALL PRIVILEGES ON *.* TO 'user'@'%';