最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
怎样解决MySQL 8.0中Navicat无法连接的权限协议问题?
时间:2026-07-04 10:44:52 编辑:袖梨 来源:一聚教程网
ERROR 1045 或 2059 错误主因是 MySQL 8.0 默认认证插件 caching_sha2_password 与旧版 Navicat 不兼容;需查用户 host 确认匹配项,为 'root'@'localhost' 和 'root'@'127.0.0.1' 同时执行 ALTER USER 切换为 mysql_native_password,FLUSH PRIVILEGES,并在 Navicat 中连接地址填 127.0.0.1 而非 localhost。
Navicat 报 ERROR 1045 或 ERROR 2059 怎么快速判断原因
先别急着改配置,打开 Navicat 连接弹窗里的错误信息——如果出现 ERROR 1045 并带 'root'@'localhost',或直接报 Authentication plugin 'caching_sha2_password' cannot be loaded,基本可锁定是认证插件不兼容,不是密码输错。MySQL 8.0 默认用 caching_sha2_password,而 Navicat 15 以下版本(尤其是 12、11)根本不认识它。
ALTER USER 必须指定 host 才生效
执行 ALTER USER 时只写 'root'@'localhost' 是不够的——Navicat 默认走 TCP 连接,哪怕你填的是 localhost,MySQL 实际匹配的可能是 'root'@'127.0.0.1' 或 'root'@'%',而这两条记录很可能不存在或插件仍是旧的。
- 先查真实用户列表:
SELECT user, host FROM mysql.user WHERE user = 'root'; - 如果只看到
root+localhost,就补一条:CREATE USER 'root'@'127.0.0.1' IDENTIFIED WITH mysql_native_password BY '你的密码'; - 再统一插件:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码';和ALTER USER 'root'@'127.0.0.1' IDENTIFIED WITH mysql_native_password BY '你的密码'; - 最后必须执行:
FLUSH PRIVILEGES;,否则修改不加载
Navicat 连接设置里填 127.0.0.1,别填 localhost
Windows 下 localhost 会优先尝试命名管道或共享内存,而 MySQL 服务默认不启用这些通道;填 127.0.0.1 强制走 TCP,路径确定,匹配 'root'@'127.0.0.1' 才能命中。
- Navicat 新建连接 → “主机名或 IP 地址”栏输入:
127.0.0.1(不是localhost) - 端口确认是实际监听值(
3306是默认,XAMPP/MAMP 可能是3307) - 密码字段必须真实填写,大小写敏感,不能留空
Docker 或长期部署建议改 my.cnf
单条 ALTER USER 治标,重启容器后新用户仍会继承 caching_sha2_password。一劳永逸的做法是改全局默认插件。
- Linux/macOS:编辑
/etc/my.cnf,在[mysqld]下加一行:default_authentication_plugin=mysql_native_password - Windows:修改
C:ProgramDataMySQLMySQL Server 8.0my.ini,同样加该配置 - Docker:把自定义
my.cnf挂载到/etc/mysql/conf.d/目录下 - 改完必须重启 MySQL 服务,否则不生效
注意:default_authentication_plugin 只影响新创建的用户,已有用户仍需单独执行 ALTER USER 切换插件——这点最容易漏掉。
相关文章
- 高德地图路线规划显示异常怎么办 07-09
- 漫蛙漫画官方版正版ios如何安装 07-09
- 胖东来官网地址-胖东来官方网站入口地址 07-09
- investopedia官网中文版入口-investopedia国内能用的官方网页版入口地址 07-09
- 一点文学txt小说网站入口-一点文学小说官网入口地址2026最新 07-09
- 易校园怎么绑定微信 07-09