解决 Navicat 连 MySQL 8.0 报 2059 Authentication plugin caching_sha2_password 错误 home 编辑时间 2021/04/19 ![](/api/file/getImage?fileId=607d4b5916199b501c022382) <br><br> ## 前言 在 `Centos 7.9` 服务器用 `docker` 安装 `MySQL 8.0`,然后用 `Navicat` 连接时,报2059错误,内容如下 ```sql 2059 Authentication plugin 'caching_sha2_password' cannot be loaded ``` 百度找到这篇文章 https://blog.csdn.net/qq_29932025/article/details/80045716 <br> 按照博主方法后,仍然报2059错误,一番研究后发现解决方法 <br><br> ## 折腾 首先这个博主说的大部分都是正确的 2059错误是因为 `mysql 8.0` 以后的加密规则为 `caching_sha2_password` 而你使用的工具连接的方法是 `mysql_native_password` <br> **需要注意的是** 你的 `mysql` 表的 `host` 字段是 `localhost` 还是 `%` 还是两个都有 查询语句如下 ```sql use mysql select user,plugin,host from user where user='root'; ``` 返回结果 | user | plugin | host | | ---- | ---- | ---- | ---- | ---- | | root | caching_sha2_password | % | | root | caching_sha2_password | localhost | <br> 那么正确的解决方案应该是 ```sql # 上一步有use的话这一步就不用了 use mysql # 记得把密码改成你自己的mysql密码 # 第一句改的是localhost 也就是本地连接 ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的mysql密码'; # 第二句改得是% 也就是所有连接 ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '你的mysql密码'; ``` <br> 再次查询 ```sql # 上一步有use的话这一步就不用了 use mysql select user,plugin,host from user where user='root'; ``` 正确的结果 | user | plugin | host | | ---- | ---- | ---- | ---- | ---- | | root | mysql_native_password | % | | root | mysql_native_password | localhost | 退出 `mysql` 并重启 `mysql` 完美解决 <br><br> ## END 送人玫瑰,手留余香 赞赏 Wechat Pay Alipay html5 css3 单页面预加载动画 第3弹 支持 vue 2017年毕业设计笔记补充