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

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

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

 

posted on 2024-03-20 11:00  数据库帮帮团  阅读(124)  评论(0编辑  收藏  举报

导航