macOs 使用Homebrew升级到MySQL 8系列之后,php无法连接解决方法

当前时间2018-9-28

使用brew install mysql 默认安装为 MySQL 8,但是使用php连接到数据库之后,出现了这种错误

Unexpected server respose while doing caching_sha2 auth: 109

但是在终端连接mysql的时候 是可以使用的 如图:

 

出现这样问题大概有半月之余,导致只能去连接外网的mysql,真的很痛苦!下边我把自己的解决办法写一下,请需要的同学参考。

 

此错误似乎是由MySQL 8.0.4中的默认身份验证表单引起的。

 解决方法


1.更改root用户的身份验证

使用MySQL更改root用户的身份验证。

$ mysql -u root

连接后执行,

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '密码';

使用更改身份验证插件。如果您设置了密码,BY ''请输入您的密码。

 

mysql> SELECT user,host,plugin FROM mysql.user;
+------------------+-----------+-----------------------+
| user             | host      | plugin                |
+------------------+-----------+-----------------------+
| mysql.infoschema | localhost | caching_sha2_password |
| mysql.session    | localhost | caching_sha2_password |
| mysql.sys        | localhost | caching_sha2_password |
| root             | localhost | mysql_native_password |
+------------------+-----------+-----------------------+
4 rows in set (0.01 sec)

请确保root已更改为mysql_native_password 。

2.编辑my.cnf

$ mysql --help | grep my.cnf
                      order of preference, my.cnf, $MYSQL_TCP_PORT,
/etc/my.cnf /etc/mysql/my.cnf /usr/local/etc/my.cnf ~/.my.cnf

您可以检查文件的加载顺序。如果您使用Homebrew安装,请编辑/usr/local/etc/my.cnf

# Default Homebrew MySQL server config
[mysqld]
# Only allow connections from localhost
bind-address = 127.0.0.1
# 追加
default_authentication_plugin=mysql_native_password

 

3.重启MySQL

用Homebrew安装的MySQL

$ mysql.server stop

即使我试图阻止,也不会停止。要停止,您需要卸载已注册的服务

$ launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist

有了这个

$ mysql.server status
 ERROR! MySQL is not running

只要是MySQL就会停止。开始

$ launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist

#ps:如果命令报错,不用管,直接执行  mysql.server start

再次查看状态

$ mysql.server status
 SUCCESS! MySQL running (XXXXX)

让我们确保mysql是running。再次用php连接测试下 看是否ok!

 

以上为我的解决办法,请参考

 

 

 

 

posted @ 2018-09-28 16:38  php小小菜鸟  阅读(1231)  评论(0编辑  收藏  举报