macOS下不能通过Navicat访问MySQL服务 报(Authentication plugin 'caching_sha2_password' cannot be loaded)
环境
- 本地操作系统: macOS Catalina 10.15
- 本地MySQL 版本: 8.0.17
- 服务器: Debian 10 (buster)
- 服务器MySQL版本: 8.0.18
问题
服务器新安装MySQL8发现在命令行可以正常链接访问而在NavicatPremium12中无法连接报错如下图
查阅资料得知MySQL8的默认认证方式为caching_sha2_password
而非之前的mysql_native_password
而Navicat12并不支持这项改动 所以如果想要使用Navicat管理数据库时需要将MySQL默认认证方式改为mysql_native_password
解决
修改服务器MySQL默认认证方式
/etc/mysql/mysql.conf.d/mysqld.cnf
在此文件的[mysqld]节点下加入
default_authentication_plugin=mysql_native_password
进入mysql创建
root用户
(没错是root)且授权 (小声BB: 以下命令需要在服务器本地操作 :(1
2
3
4$ mysql -u root -p
mysql> use mysql;
mysql> CREATE USER 'root'@'%';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';可以看到创建用户后该用户的登录认证方式依旧是
caching_sha2_password
所以需要继续修改plugin修改用户的认证插件
1
2
3
4
5
6mysql> #修改密码#
mysql> ALTER USER 'root'@'%' IDENTIFIED BY 'yourpassword';
mysql> #修改认证插件#
mysql> ALTER USER 'root'@'%' IDENTIFED WITH mysql_native_password BY 'yourpassword';
mysql> #刷新privileges#
mysql> FLUSH PRIVILEGES;注意: 此时的密码在确认时MySQL会根据安装强密码设置来判断是否合格 如果不小心设置了强密码 可以根据如下命令修改规则与长度 当然这边还是强烈建议使用强密码
mysql> #设置强密码等级为LOW# mysql> set global validate_password.policy=0; mysql> #设置强密码长度# mysql> set global validate_password.length=4;
这时候可以看到刚创建的root用户的认证插件已经改好了 我们这时候再回到Navicat中测试就正常啦
\(^o^)/