mysql由原来的5.6版本升级到8.0版本后,Laravel连接mysql报错:local.ERROR: exception 'ErrorException' with message 'PDO::__construct(): The server requested authentication method unknown to the client [caching_sha2_password]'
原因:
1)过去 MySQL 的密码认证插件是“mysql_native_password”。
(2)而当 mysql 到了 8.0 版以上时,密码认证插件使用的是“caching_sha2_password”。可是当前有很多数据库工具和链接包都不支持这个。
解决方法:
修改密码认证方式,改回“mysql_native_password”认证插件。
1、编辑my.cnf文件
vi /etc/my.cnf
2、键入i进入编辑模式,在[mysqld]下增加以下内容:
default_authentication_plugin=mysql_native_password
3、重启mysql
systemctl restart mysqld
重启后如果还是报如下错误:SQLSTATE[HY000] [2054] Server sent charset unknown to the client,这是因为mysql8.0默认编码修改成了utfmb4,需要再次修改配置文件,在my.cnf文件末尾增加如下配置:
[client] default-character-set=utf8 [mysql] default-character-set=utf8 [mysqld] collation-server = utf8_unicode_ci character-set-server = utf8
本帖已被设为精华帖!