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

Mysql tytrock ⋅ 于 2024-11-02 16:57:33 ⋅ 303 阅读

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
    暂无评论~~
    • 请注意单词拼写,以及中英文排版,参考此页
    • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`, 更多语法请见这里 Markdown 语法
    • 支持表情,使用方法请见 Emoji 自动补全来咯,可用的 Emoji 请见 :metal: :point_right: Emoji 列表 :star: :sparkles:
    • 上传图片, 支持拖拽和剪切板黏贴上传, 格式限制 - jpg, png, gif
    • 发布框支持本地存储功能,会在内容变更时保存,「提交」按钮点击时清空
    Ctrl+Enter