mysql 8.0+ 默认使用 caching_sha2_password 认证插件,旧版 navicat/dbeaver 因不支持该协议而连接失败,本质是客户端认证能力不足而非密码错误或权限问题;解决方式包括:为用户显式指定 mysql_native_password 插件、升级客户端驱动、或配置服务端默认插件,同时需确保 host 匹配、bind-address 开放及防火墙放行。

MySQL 本身不识别“客户端工具”,只认连接发起的 host、user 和认证插件。所谓“限制 Navicat 或 DBeaver”,本质是控制它们连接时使用的 IP 或主机名,以及它们能否通过认证协议。
为什么 Navicat/DBeaver 连不上却报 “Access denied”?
这不是密码错,而是 MySQL 没匹配到任何 'user'@'host' 记录。常见原因:
- Navicat 默认填
localhost,但你只建了'user'@'127.0.0.1'(或反过来)——这两个是完全独立的账号 - DBeaver 默认用
localhost走 Unix socket,而你的用户只授权了'user'@'192.168.1.5' - MySQL 8.0+ 默认用
caching_sha2_password插件,老版本 DBeaver / Navicat 不支持,连接直接断开,错误可能静默或显示Public Key Retrieval is not allowed
如何让特定 IP 工具能连,其他不能?
靠精确指定 Host 字段,不是靠工具名:
MySQL 9.6.0是面向Linux平台的2026年创新版本,核心架构迎来重大革新。其将外键约束与级联操作从InnoDB引擎层上移至SQL层,确保所有数据变更均被完整记录至Binlog,彻底解决了CDC(变更数据捕获)与主从复制中的数据不一致难题。此外,该版本引入container_aware启动选项以原生适配容器环境,并对审计日志进行了组件化重构,为追求极致数据一致性与云原生体验的开发者提供了全新选择。
- 允许某台开发机:用
CREATE USER 'dev'@'10.0.2.5' IDENTIFIED BY 'pwd'; - 允许整个办公网段:用
'dev'@'192.168.1.%'(注意是%,不是*) - 禁止公网随意连:绝不要用
'user'@'%',尤其在生产环境 - 确认已存在账号:执行
SELECT User, Host FROM mysql.user;,别依赖 GUI 自动补全
老工具连不上 MySQL 8.0+ 怎么办?
根本问题是认证插件不兼容,不是权限问题:
- 新建用户时强制指定旧插件:
CREATE USER 'dev'@'192.168.1.5' IDENTIFIED WITH mysql_native_password BY 'pwd123'; - 已有用户可改:
ALTER USER 'dev'@'192.168.1.5' IDENTIFIED WITH mysql_native_password BY 'pwd123'; - 别全局降级插件(如改
default_authentication_plugin),会影响所有新用户
连接数和资源也得一起控
光控 host 不够,还得防工具开一堆连接打爆服务:
- 限制并发连接数:
ALTER USER 'dev'@'192.168.1.5' WITH MAX_USER_CONNECTIONS 3; - 限制每小时查询量:
GRANT USAGE ON *.* TO 'dev'@'192.168.1.5' WITH MAX_QUERIES_PER_HOUR 100; - 验证是否生效:
SELECT User, Host, Max_user_connections FROM mysql.user WHERE User = 'dev';,再开第 4 个连接看是否报ERROR 1226
真正容易被忽略的是:bind-address 和防火墙。哪怕你把用户设成 'dev'@'192.168.1.5',如果 MySQL 配置里还是 bind-address = 127.0.0.1,或者服务器防火墙没放行 3306 端口,工具照样连不上——这时报的错常被误判为权限问题。










