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新增密码策略包括:
密码过期策略,需定期更改密码
历史密码检测,避免重复使用旧密码
需提供旧密码修改新密码,防止被篡改
双密码机制,增加主密码或第二密码选择,提高安全性
密码强度约束,避免弱密码使用
温馨提示:答案为网友推荐,仅供参考