背景
在服务器使用docker安装了mysql 8.0.23,本地使用navicat链接远程服务器mysql,MySQL的错误2059,提示无法加载认证插件'caching_sha2_password'。
出错原因
这个错误通常出现在较旧的MySQL客户端连接到MySQL 8.0及以上版本的服务器时,因为MySQL 8.0默认使用了新的认证插件caching_sha2_password,而旧版本的客户端可能不支持这个插件。用户可能在安装或升级MySQL后,尝试用旧版的客户端工具(比如MySQL Workbench的旧版本,或者某些应用程序使用的旧驱动)连接时遇到这个问题。
解决思路
解决这个问题的方法有几个可能的途径。首先是升级客户端工具或驱动,确保它们支持新的认证插件。如果用户无法升级客户端,可能需要修改MySQL服务器的用户认证方式,回退到旧的mysql_native_password插件。或者,调整服务器的默认认证插件设置。
解决方法
方法 1:升级客户端工具或驱动
推荐做法:升级到支持新认证插件的客户端。
更新 navicat 到最新版。
编程语言驱动更新(如 Python 的 mysql-connector-python、Node.js 的 mysql2、PHP 的 mysqli 扩展等)。
使用 JDBC 驱动时,确保版本 ≥ 8.0.11。
方法 2:修改用户认证方式(降级插件)
如果无法升级客户端,可将用户的认证插件改为旧版 mysql_native_password:
2.1 以 root 用户登录 MySQL:
mysql -u root -p
2.2 修改用户密码和插件:
//修改指定用户的插件和密码(替换 'your_user' 和 'your_password')
ALTER USER 'your_user'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_password';
2.3 查看确认
select user,plugin,host from user ;
2.4 刷新权限
FLUSH PRIVILEGES;
退出并重新连接测试:
方法 3:修改 MySQL 默认认证插件
直接修改 MySQL 服务器的默认认证插件(需谨慎,影响新创建的用户):
编辑 MySQL 配置文件:
Linux: /etc/mysql/my.cnf 或 /etc/mysql/mysql.conf.d/mysqld.cnf
Windows: C:\ProgramData\MySQL\MySQL Server 8.0\my.ini
在 [mysqld] 部分添加:
default_authentication_plugin = mysql_native_password
重启 MySQL 服务:
sudo systemctl restart mysql
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。