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
插件的。
版权声明:
作者:Joe.Ye
链接:https://www.appblog.cn/index.php/2023/03/24/php-error-the-server-requested-authentication-method-unknown-to-the-client/
来源:APP全栈技术分享
文章版权归作者所有,未经允许请勿转载。
共有 0 条评论