Rock笔记
~/rocknotes/articles/413.md article
// article · mysql

【笔记】MySQL 升级到 8.0 后 Laravel 连接报错的解决方法

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




回复// 0 replies

最新回复 ↓
// 暂无回复

回复功能沿用原详情页:前往原页面参与讨论 →