PHP无法连接MySQL8.0数据库问题处理 报错如下:SQLSTATE[HY000] [2054]

如题所述

PHP无法连接MySQL8.0数据库问题处理,常见错误为:

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

此错误源于MySQL8使用新密码验证插件caching_sha2_password,而旧版本的PHP如PHP 5.6及更早版本不支持该插件。以下两种方法可解决此问题:

方法一:升级PHP支持MySQL 8新验证插件。

对于PHP 7.2.8和7.1.20版本,已内置支持caching_sha2_password,可直接连接MySQL 8。对于旧版本如PHP 7.0.31和5.6.37,需检查是否支持caching_sha2_password,可通过phpinfo()函数查看。

方法二:手动配置MySQL更改验证插件。

1. 在/etc/my.cnf配置文件中,添加以下行:

default-authentication-plugin=mysql_native_password

2. 登陆MySQL,使用以下命令更改验证插件为mysql_native_password:

ALTER USER 'xxxxx'@'%' IDENTIFIED WITH mysql_native_password BY 'new_password';

3. 重启数据库服务。

以上方法适用于旧版本PHP,但建议使用caching_sha2_password,因其更安全且性能更高。

MySQL8新增密码策略包括:

密码过期策略,需定期更改密码

历史密码检测,避免重复使用旧密码

需提供旧密码修改新密码,防止被篡改

双密码机制,增加主密码或第二密码选择,提高安全性

密码强度约束,避免弱密码使用
温馨提示:答案为网友推荐,仅供参考
相似回答
大家正在搜