升级至MySQL8.0后,Web应用连接不上数据库的解决方法

今天将MySQL5.7升级到MySQL8.0后,突然眼前一片黑暗:所有Web服务都提示连不上数据库,通过Navicat连接倒是正常。

百度了半小时,毛线结果都没有,我也是有毛病,明知百度从来就没解决过我的问题。突然想起曾经写过一篇MySQL5.7离线安装方法,里面捎带着一点MySQL8.0的知识,才想起MySQL8.0针对账户安全引入了新的身份验证插件。

MySQL8默认的验证方法是caching_sha2_password(如下图),而PHP7的mysqlnd只支持mysql_native_password,因此,解决方法有二。

方法一 创建/修改用户时,指定用户身份验证方案,如:

# 创建用户
CREATE USER 'user_name'@'localhost' IDENTIFIED WITH mysql_native_password BY 'NewPassword@123';
# 修改密码
ALTER USER 'user_name'@'localhost' IDENTIFIED WITH mysql_native_password BY 'NewPassword@123';

FLUSH PRIVILEGES;

方法二 修改配置文件,更改默认的身份验证插件,如:

[mysqld]
default_authentication_plugin = mysql_native_password
# 重启mysql
systemctl restart mysqld

# 因此前多次连接失败,很可能会被锁IP,通过以下命令解锁
mysqladmin -uroot -p flush-hosts

原创文章禁止转载:技术学堂 » 升级至MySQL8.0后,Web应用连接不上数据库的解决方法

精彩评论

6+9=

感谢您的支持与鼓励

支付宝扫一扫打赏

微信扫一扫打赏