最直接有效的解法是执行ALTER USER切换认证插件为mysql_native_password并FLUSH PRIVILEGES;需先用SELECT确认目标用户plugin值,再按host精确修改,漏掉FLUSH或host不匹配均会导致失败。

连不上 MySQL 8.0,八成不是密码错了,也不是网络不通,而是客户端压根不认 caching_sha2_password 这个握手协议——它和旧驱动、老工具根本对不上频道。最直接有效的解法,是用 ALTER USER 把目标用户切回 mysql_native_password,并立刻执行 FLUSH PRIVILEGES。
怎么确认真是 caching_sha2_password 在报错
别靠猜。用还能连上的账号(比如 root)进 MySQL 命令行,执行:
SELECT user, host, plugin FROM mysql.user WHERE user = 'your_username';
重点看 plugin 列。如果显示 caching_sha2_password,且你用的是以下任一情况,基本就是它:
-
Navicat 12或更早版本 -
JDBC驱动是mysql-connector-java:5.1.x -
PyMySQL < 1.0.2或mysqlclient < 2.0 -
PHP 7.3及更早 + 未启用mysqli扩展
典型错误信息包括:Authentication plugin 'caching_sha2_password' cannot be loaded、Unable to load authentication plugin,或连接直接中断无提示。
ALTER USER 切换插件必须带密码重写
语法错一步就锁死账号。必须严格按格式写,不能省略 BY 子句:
ALTER USER 'app_user'@'localhost' IDENTIFIED WITH mysql_native_password BY 'real_password';
常见坑点:
将 LaTeX(.tex)学术论文转换为 Word(.docx),支持可编辑的 OMML 公式、原生 Word 表格、嵌入图形、IEEE 双栏排版及参考文献
-
'user'@'localhost'、'user'@'127.0.0.1'、'user'@'%'是三个独立用户,Navicat 默认走127.0.0.1,只改localhost就白忙 - 哪怕原密码没变,也必须重写一遍;漏掉
BY 'xxx'会导致密码被清空 - 执行完必须紧跟
FLUSH PRIVILEGES;,否则变更不生效,重启 MySQL 也没用 - 宝塔面板用户别在 phpMyAdmin 界面点“编辑”,
plugin字段常为只读,必须进 SQL 标签页手动执行
my.cnf 里设 default_authentication_plugin 为什么没用
这个配置项只影响新创建的用户,对已存在的 root、应用账号、复制账号完全无效。很多人改完就重启,结果 Navicat 还是连不上——因为旧用户根本没被改。
--default-auth=mysql_native_password 这种命令行参数只作用于当前 mysql 客户端进程,对 Navicat、Java 应用、Python 脚本里的驱动毫无影响。它不改服务端元数据,纯属本地协商开关。
云数据库(如阿里云 RDS)通常禁止修改配置文件,ALTER USER 是唯一可行路径。
遇到 ERROR 1524: Plugin 'mysql_native_password' is not loaded 怎么办
这不是操作错了,是插件根本没加载——常见于 MySQL 8.4+ 或精简安装包:
- 先查插件目录:
SHOW VARIABLES LIKE 'plugin_dir'; - 再用系统命令确认路径下是否存在
mysql_native_password.so(Linux/macOS)或.dll(Windows) - 若文件缺失,别手动拷贝;重装完整服务端包(如 Ubuntu 上运行
sudo apt install mysql-server) - 若路径存在但权限不足(尤其 SELinux 环境),需确保
mysql用户对目录有r-x权限,并设置正确上下文:mysqld_plugin_t
真正容易被忽略的,是 host 的精确匹配和 FLUSH PRIVILEGES 的强制执行——这两步漏掉任何一个,都会让整套操作失效。


















