DBeaver连接MySQL 8失败主因是默认caching_sha2_password认证插件与旧驱动不兼容,需在驱动属性中设allowPublicKeyRetrieval=true、serverTimezone=Asia/Shanghai、useSSL=false,或服务端执行ALTER USER...IDENTIFIED WITH mysql_native_password并FLUSH PRIVILEGES。

MySQL 8 默认认证方式导致连接失败
DBeaver 连不上 MySQL 8,十有八九是 caching_sha2_password 认证插件惹的祸——这是 MySQL 8.0.4+ 的默认身份验证方式,而老版本 JDBC 驱动(比如 5.1.x 或 6.0.x)压根不认它。
现象很典型:测试连接时卡住、报错 Public Key Retrieval is not allowed,或者直接提示 Access denied for user,但用户名密码明明是对的。
- 根本原因不是密码错,而是驱动无法完成 SHA2 挑战握手
- MySQL 8.0.28+ 默认禁用
allowPublicKeyRetrieval=true参数(出于安全考虑) - 单纯升级驱动不一定够——必须匹配认证机制 + 显式启用安全参数
驱动版本与 URL 参数必须同步调整
只换驱动或只加参数都不保险。MySQL 8 推荐搭配 mysql-connector-java:8.0.33(或更新)+ 显式配置连接 URL 参数。
在 DBeaver 连接配置的「驱动属性」页中,确保以下两项同时存在:
-
serverTimezone值设为Asia/Shanghai(否则时区错乱引发隐性错误) -
allowPublicKeyRetrieval值设为true(绕过公钥获取限制) -
useSSL值设为false(本地开发可关;生产环境应配证书并设true)
如果驱动已手动指定 jar 包,请确认路径下确实是 mysql-connector-java-8.0.xx.jar,而不是混进了 mysql-connector-java-5.1.xx.jar。
不想改驱动?临时切回 mysql_native_password
开发调试阶段,快速验证是否是认证问题,可以直接在 MySQL 服务端把用户认证方式降级:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_password';
执行后记得 FLUSH PRIVILEGES;。注意:这不是长期方案,尤其不能用于生产环境,因为 mysql_native_password 已被官方标记为“deprecated”。
- 该操作仅影响指定用户,不影响其他用户或全局配置
- 如果用户是从远程主机连接(如
'root'@'%'),请把localhost替换为对应 host - 执行后 DBeaver 不需重启,直接「测试连接」即可生效
连接成功后仍看不到数据库?检查默认 schema
即使连接测试通过,左侧导航器里也可能空空如也——常见原因是连接时没指定默认数据库,且用户没有 SHOW DATABASES 权限。
解决方法分两步:
- 在 DBeaver 新建连接的第二步(“编辑连接设置”页),把「数据库」字段填上已知库名(如
mysql或你自己的库),再测试 - 若仍不可见,登录 MySQL 终端执行:
SHOW GRANTS FOR 'your_user'@'host';,确认是否有USAGE以外的基础权限
最容易被忽略的是:DBeaver 默认不自动展开所有 schema,必须双击连接节点,或右键→「连接»刷新」才能加载结构树。


















