前言

Centos 7.9 服务器用 docker 安装 MySQL 8.0,然后用 Navicat 连接时,报2059错误,内容如下

  1. 2059 Authentication plugin 'caching_sha2_password' cannot be loaded

百度找到这篇文章
https://blog.csdn.net/qq_29932025/article/details/80045716

按照博主方法后,仍然报2059错误,一番研究后发现解决方法



折腾

首先这个博主说的大部分都是正确的
2059错误是因为 mysql 8.0 以后的加密规则为 caching_sha2_password
而你使用的工具连接的方法是 mysql_native_password

需要注意的是
你的 mysql 表的 host 字段是 localhost 还是 % 还是两个都有
查询语句如下

  1. use mysql
  2. select user,plugin,host from user where user='root';

返回结果

user plugin host
root caching_sha2_password %
root caching_sha2_password localhost


那么正确的解决方案应该是

  1. # 上一步有use的话这一步就不用了
  2. use mysql
  3. # 记得把密码改成你自己的mysql密码
  4. # 第一句改的是localhost 也就是本地连接
  5. ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的mysql密码';
  6. # 第二句改得是% 也就是所有连接
  7. ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '你的mysql密码';


再次查询

  1. # 上一步有use的话这一步就不用了
  2. use mysql
  3. select user,plugin,host from user where user='root';

正确的结果

user plugin host
root mysql_native_password %
root mysql_native_password localhost

退出 mysql 并重启 mysql
完美解决


END