问题
在mac上,使用.dmg文件安装了mysql8.0.12,使用navicat连接mysql数据库时,报错:
2059 - Authentication plugin 'caching_sha2_password' cannot be loaded: dlopen(../Frameworks/caching_sha2_password.so, 2): image not found
首先我们进入mysql看下mysql的加密方式
mysql -u root -p
use mysql;
# 查看加密方式
select user, host, plugin, authentication_string from user;
结果如下,
列说明:
- user:用户名
- host:支持登录的ip,%表示所有ip都可以登录
- plugin:加密方式
- authentication_string:加密后的字符串
可以看到,连接不上的原因是客户端不支持caching_sha2_password
的密码加密方式。那么,我们需要修改用户密码加密方式为经典方式:mysql_native_password
。
解决方案
命令行连接mysql,修改用户密码的加密方式为mysql_native_password
# 使用经典的密码加密方式
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码';
刷新权限
修改权限或密码后,需要使用到该命令
flush PRIVILEGES;
在次查看加密方式,发现已经改为mysql_native_password
而navicat也连接成功了