背景是:在之前用LNMP搭建WordPress时候,进入WordPress的安装引导页面。连接数据库一直连接不上。一直连接失败。
这里来说一下排查的过程以及最终的解决方法
- 遇到这个问题,我首先查看 mysqld 服务是否启动。
systemctl status mysqld
发现一切正常 - 虽然是连接本地的mysql,但是还是习惯的看了一眼防火墙,mysql对应的端口已经放开。
- 眉头开始紧缩?莫非我输出账号密码了?
- 在终端输入
mysql -u root -p
输入对应的密码后,正常进入mysql页面 - 使用第三方连接工具 Navicat进行连接mysql 。也是连接不上。
- 再次确认主机、密码、账号,真的真的没有问题,都输入对了。此刻我慌了
-
打开google。一顿查最终解决问题。
问题的原因:我装的php版本是7.2,装的MySQL 是最新的8.0的。新版本的 mysql (8.0) 使用了一种更高级的身份验证方法 caching_sha2_password 。但是在装php时候没有装最新的连接mysql的身份验证插件,所以无法连接最新版本的mysql
解决方案1:安装php对应的连接mysql验证的最新插件。最后可以使用phpinfo()来确认插件里是否安装成功,如果安装成功即可
解决方案2:使用老的mysql的身份验证方式。 mysql_native_password 是传统的身份验证方法 – 它不是很安全(它仅使用密码的哈希值),但它与旧驱动程序兼容。
执行命令: ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '<password>';
来让连接mysql时,对对应用户的验证方式采用传统验证方式。 最终问题解决!成功连接!
厉害啊