在使用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 ''请输入您的密码。
使用更改身份验证插件。如果您设置了密码,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
[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!
本文经授权后发布,本文观点不代表立场,文章出自:https://www.cnblogs.com/qichao123/p/9719470.html