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
不过,还是强烈建议采用新的插件,因为它更安全,性能也更高。
其他的几个新密码策略主要有:
支持密码过期策略,需要周期性修改密码
增加历史密码检测机制,防止总是几个密码反复重用
需要提供旧密码才能修改新密码,防止被篡改
支持双密码机制,可以选择采用主密码还是第二密码连接,安全性更高
增加密码强度约束,避免使用弱密码
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 我与微信审核的“相爱相杀”看个人小程序副业
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· spring官宣接入deepseek,真的太香了~