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

306 阅读1分钟

PHP无法连接MySQL8.0数据库问题处理 报错如下: SQLSTATE[HY000] [2054] The server requested authentication method unknown to the client

发生这种错误,是由于MySQL8默认使用了新的密码验证插件:caching_sha2_password,而之前的PHP版本中所带的mysqlnd无法支持这种验证。解决这个问题,有两种办法。

解决方法一: 升级PHP支持MySQL 8的新验证插件。 PHP 7.2.8和PHP 7.1.20已经可以支持caching_sha2_password,直接连接MySQL 8。 截止PHP 7.0.31和PHP 5.6.37还无法支持caching_sha2_password,不知道后续版本是否会做出支持。 可以通过phpinfo()函数了解当前安装的PHP是否支持caching_sha2_password:

解决方法二:

  1. 在/etc/my.cnf配置文件中,添加如下行 default-authentication-plugin=mysql_native_password

2.登陆MySQL ALTER USER ‘xxxxx’@‘%’ IDENTIFIED WITH mysql_native_password BY ‘new_password’;

3.重启数据库 systemctl restart mysqld

不过,还是强烈建议采用新的插件,因为它更安全,性能也更高。 其他的几个新密码策略主要有: 支持密码过期策略,需要周期性修改密码 增加历史密码检测机制,防止总是几个密码反复重用 需要提供旧密码才能修改新密码,防止被篡改 支持双密码机制,可以选择采用主密码还是第二密码连接,安全性更高 增加密码强度约束,避免使用弱密码

数库信息技术-微信大.jpg