技术饭

php7+mysql8下出现网页无法访问问题解决方案

copylian    0 评论    11704 浏览    2018.09.15

php7+mysql8下出现网页无法访问问题解决方案,最近因为剁手买了Centos7,在上面搭建Ningx1.14.0+PHP7.2+Mysql8.0环境。数据库mysql从5.7跳到8,性能快了一倍,lnmp基本都弄好了,但是到用php连接Mysql这一步出了问题,一直无法加载网页,可是使用客户端、shell命令都可以进入mysql,多方查询才找到答案!

出错原因:

mysql8使用caching_sha2_password的身份验证机制,而以往的验证机制则是mysql_native_password

解决方法:

vim /etc/my.cnf

(mysql8默认没有配置文件,这个得新建)

添加:

[mysqld]

default_authentication_plugin=mysql_native_password

到这一步我的问题就已经解决了,如果还未解决请往下看!!!

未解决:

但是这样还没完全解决,因为这样只对修改配置并重启Mysql后的新建用户有效

而最初创建的root用户依然是caching_sha2_password的身份验证机制

【修改配置并重启后新建一个用户,可以令其密码与root密码相同,供后续使用(这一步也可以验证配置是否生效,生效的话加密后的字符串应跟root密码不同)】

  (新建用户:CREATE USER ‘新用户名’@‘localhost' IDENTIFIED BY ‘密码’;)

(以下修改操作前请备份!!)

这个可以在mysql数据库中的user表直接将root用户的plugin改为mysql_native_password

同时把对应的authentication_string改为新用户加密后的密码

(顺利的话这个时候重启mysql就可以了,如果可以了就不用往下看了)

然而这个时候我又刚好脑抽了,改authentication_string的时候没备份,改下去重启后就连接不上了。

无奈,只好修改密码(后来发现是我原来密码没有删除干净,导致改的密码不对。晕。)

先是修改配置文件:

[mysqld]skip-grant-tables  #加了这行

default_authentication_plugin=mysql_native_password

然后重启mysql

这时候可以登录进去修改root密码

alter user 'root'@'localhost'IDENTIFIED BY ‘新密码’;

最后记得去掉skip-grant-tables并重启Mysql

参考资料:https://www.cnblogs.com/roggeyue/articles/9191884.html

只袄早~~~
感谢你的支持,我会继续努力!
扫码打赏,感谢您的支持!
php7 mysql8 

文明上网理性发言!

  • 还没有评论,沙发等你来抢