Navicat 连接 MySQL8 报错:2059 - Authentication plugin ‘caching_sha2_password’ cannot be loaded:xxxx;
问题原因
这是因为 mysql 8 之前密码加密规则为 mysql_native_password,而 MySQL8 之后的加密规则为 caching_sha2_password,也就是说,如果要连接 MySQL,其实只需要将 密码规则 改回 mysql_native_password 即可;
解决方法
1. 首先进入 mysql
mysql -uroot -p
2. 选择数据库
use mysql;
3. 更改密码加密方式,如果是远程连接,这里的 localhost 修改成为 %
ALTER USER 'root'@'localhost/%' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;
4. 更新用户密码
ALTER USER 'root'@'localhost/%' IDENTIFIED WITH mysql_native_password BY 'password';
5. 刷新权限
FLUSH PRIVILEGES;
执行完以上操作后,再次使用 Navicat 进行连接
参考个人执行步骤:
[root@192 docker]# docker exec -it mysql.8.main bash
root@bd202b1dabaf:/# mysql -uroot -p
Enter password:
mysql> use mysql;
mysql> select user,host from user;
+------------------+-----------+
| user | host |
+------------------+-----------+
| root | % |
| mysql.infoschema | localhost |
| mysql.session | localhost |
| mysql.sys | localhost |
| root | localhost |
+------------------+-----------+
5 rows in set (0.00 sec)
mysql> ALTER USER 'root'@'%' IDENTIFIED BY '201314' PASSWORD EXPIRE NEVER;
Query OK, 0 rows affected (0.01 sec)
mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '201314';
Query OK, 0 rows affected (0.01 sec)
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)