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

Mysql ⋅ tytrock ⋅ at 2024-11-02 16:57:33 ⋅ 7906 Reads

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




This topic has been mark as Excenllent Topic.
Total Reply Count: 0
    No comments~~
    • publish_typography
    • publish_markdown
    • 支持表情,使用方法请见 Emoji 自动补全来咯,可用的 Emoji 请见 :metal: :point_right: Emoji 列表 :star: :sparkles:
    • publish_image
    • publish_draft
    Ctrl+Enter