navicat 连不上 mysql 8 的主因是认证插件不兼容:mysql 8 默认用 caching_sha2_password,而旧版 navicat 仅支持 mysql_native_password;需执行 alter user 'root'@'localhost' identified with mysql_native_password by '密码'; 并 flush privileges;,必要时在 my.cnf 中配置 default_authentication_plugin=mysql_native_password 并重启服务。

Navicat 连不上 MySQL 8:mysql_native_password 插件没设对
MySQL 8 默认用 caching_sha2_password 做身份验证,而 Navicat(尤其旧版)不支持它,直接报“密码错误”或“Authentication plugin 'caching_sha2_password' cannot be loaded”。这不是密码输错了,是插件不兼容。
最稳的解法是把 root(或其他用户)的认证方式切回 mysql_native_password,不是改密码,是改认证协议。
- 先用命令行登录 MySQL(哪怕用临时密码或跳过权限表的方式)
- 执行:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码'; - 如果要允许远程连接,把
'localhost'换成'%',但注意host必须已存在(查SELECT Host,User FROM mysql.user;) - 别漏掉
FLUSH PRIVILEGES;,否则不生效
my.ini / my.cnf 里加 default_authentication_plugin 是预防性操作
只改单个用户插件能救急,但新创建的用户还会默认用 caching_sha2_password。想一劳永逸,得改配置文件。
Windows 下打开 C:\ProgramData\MySQL\MySQL Server 8.0\my.ini,Linux 下通常是 /etc/my.cnf 或 /etc/mysql/my.cnf,在 [mysqld] 段落下加一行:
default_authentication_plugin=mysql_native_password
加完必须重启 MySQL 服务才生效(net stop MySQL80 && net start MySQL80 或 systemctl restart mysqld)。不重启等于没改。
注意:这个配置不影响已有用户的认证方式,只影响后续 CREATE USER 的默认行为。
远程连接还报 10061?检查三件事:端口、防火墙、Host 字段
就算插件改对了,Navicat 连远程 MySQL 8 还是失败,大概率卡在连接建立阶段,错误码 10061 表示“连接被拒绝”,和密码无关。
-
netstat -an | findstr :3306(Windows)或ss -tlnp | grep :3306(Linux)确认 MySQL 确实在监听0.0.0.0:3306,不是只监听127.0.0.1 - 检查 Windows 防火墙或 Linux
ufw/iptables是否放行了 3306 端口 -
SELECT Host,User FROM mysql.user WHERE User='root';看root的Host是localhost还是%;如果是前者,远程连不上——得执行UPDATE mysql.user SET Host='%' WHERE User='root' AND Host='localhost'; FLUSH PRIVILEGES;(慎用,生产环境建议单独建远程用户)
跳过权限表改密码时,--skip-grant-tables 启动失败常见原因
很多人卡在这步:想重置密码,运行 mysqld --skip-grant-tables 却提示“不是内部或外部命令”或直接闪退。
- 没进到 MySQL 的
bin目录就执行命令 —— 必须cd "C:\Program Files\MySQL\MySQL Server 8.0\bin"再运行 - 服务名混淆:Windows 上 MySQL 8 默认服务名是
MySQL80,不是mysql,停服务要用net stop MySQL80 - Data 目录路径错乱:自定义安装路径后,
mysqld找不到data文件夹,会报错退出;此时需手动指定:mysqld --datadir="D:\mysql\data" --skip-grant-tables --console - 启动后光标不动 ≠ 成功:要看到类似
Ready for connections.或至少没报错且进程持续运行才算真正启起来
改认证插件这事看着只是换一行 SQL,但实际要串起配置、权限表、网络层三层逻辑。漏掉任意一环,Navicat 都会安静地弹出“密码错误”——它根本没机会把密码发出去。











