PHP错误:The server requested authentication method unknown to the client

使用PHP连接MySQL 8的时候,可能会发生如标题所示的错误:

SQLSTATE[HY000] [2054] The server requested authentication method unknown to the client

发生这种错误,是由于MySQL 8默认使用了新的密码验证插件:caching_sha2_password,而之前的PHP版本中所带的mysqlnd无法支持这种验证。

升级PHP支持MySQL 8的新验证插件。

PHP 7.2.8和PHP 7.1.20已经可以支持caching_sha2_password,直接连接MySQL 8

可以通过phpinfo()函数了解当前安装的PHP是否支持caching_sha2_password

在MySQL 8中创建或修改使用caching_sha2_password插件的账户

如果不能升级PHP,可以在MySQL 8中创建(或修改)使用caching_sha2_password插件的账户,使之使用mysql_native_password,这样先前版本的PHP即可连接使用。

  • 在CREATE USER时,使用IDENTIFIED WITH xxx_plugin BY 'password',比如:
CREATE USER 'native'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password!2#4';
  • 使用ALTER USER修改已有账户的验证插件:
ALTER USER 'native'@'localhost' IDENTIFIED WITH mysql_native_password

ALTER USER 'native'@'localhost' IDENTIFIED WITH mysql_native_password BY 'new_password';

采用前一种方式,账户的密码将被清除;BY子句将为账户设置新的密码。

  • /etc/my.cnf配置文件中,有一行:
# default-authentication-plugin=mysql_native_password

请删除注释符号#并重新启动mysqld使之生效,此后创建的账户均默认使用mysql_native_password

如果完成MySQL Server的安装之后,在没有启动过mysqld服务的情况下修改/etc/my.cnf配置,那么启动mysqld之后创建的'root'@'localhost'账户也是使用mysql_native_password插件的。

上一篇 PHP system libzip must be upgraded to version >= 0.11
下一篇 CentOS下以二进制方式安装 MySQL 8
目录
文章列表
1 Android 软键盘弹出时把控件布局顶出去的解决方法
Android 软键盘弹出时把控件布局顶出去的解决方法
2
ElasticSearch 7 搜索(10)聚合查询指标聚合
ElasticSearch 7 搜索(10)聚合查询指标聚合
3
quartz Cron表达式
quartz Cron表达式
4
Jenkins构建vue项目
Jenkins构建vue项目
5
Swift UI - 给表格添加编辑功能(删除,插入)
Swift UI - 给表格添加编辑功能(删除,插入)
最新评论
一位WordPress评论者
一位WordPress评论者
2月12日
您好,这是一条评论。若需要审核、编辑或删除评论,请访问仪表盘的评论界面。评论者头像来自 Gravatar。