关于Mac上MySQL认证失败的问题

今天遇到了点小问题,想重构一个项目,顺便创建一个干净的数据库,但是连接失败!

问题描述

1638526336673.png

事实上我在终端上测试后确定账号和密码是没有问题的,因此重点查看软件和MySQL。终于仔细检查后发现是认证失败的问题。这个问题就很纳闷,咋会遇到这种问题,只好看看大家有没有遇到过。难道是Sequel Pro的问题?不应该吧,这就是一个普通的开源软件。

解决

终于找到一篇靠谱的文章,描述了异常的原因,而不是直接说怎么解决。
主要原因是8.x版本的MySQL的验证机制变成了caching_sha2_password,并不是原来的mysql_native_password。问题说简单也简单,说复杂也复杂,升级个版本还有这样的问题,怪不得没有太多人愿意随便升版本。

方案

低版本的MySQL,比如5.6,使用的时候是这样的

1
2
3
4
5
create database xxx charset=utf8mb4;
CREATE USER 'xxx'@'%' identified by 'xxx';

GRANT ALL PRIVILEGES ON xxx.* TO 'xxx'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

而对于高版本的比如8.x就得用以下的方式。

1
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';

完事,再用Sequel Pro 连接就成功了,其他工具navicat也是这么操作,一样可以连接了。

1638526875427.png

总结

其实其他版本的MySQL也会有其他的问题,和低版本相比而言,之后再整理一下。
很快就要休假了,反而又热爱上了工作,可笑。。。
但愿假期一切安好吧!