答案是:需配置allowPublicKeyRetrieval=true并设useSSL=false,或改用户认证为mysql_native_password。因MySQL 8.0+默认caching_sha2_password插件要求RSA公钥交换,而JDBC驱动默认禁止公钥获取,故连接被阻断;前者快速适配但仅限可信环境,后者更安全兼容。

直接连不上,大概率不是密码错了,而是 MySQL 服务没开、网络不通、用户权限没给、或者驱动参数不兼容 —— 尤其是 MySQL 8.0+ 默认用 caching_sha2_password 认证,DBeaver 默认 JDBC 驱动会卡在公钥获取环节。
确认 MySQL 服务已运行且监听正确端口
本地部署后,先别急着开 DBeaver。用命令行验证 MySQL 是否真正就绪:
- Linux/macOS 执行
sudo systemctl status mysqld或ps aux | grep mysqld,确保进程在跑 - 检查监听地址:运行
netstat -tlnp | grep :3306,输出里必须有0.0.0.0:3306或*:3306;若只有127.0.0.1:3306,说明只允许本地回环连接,远程或虚拟机访问会失败 - Windows 用户打开任务管理器 → 服务 → 查找
MySQL80(或你安装时命名的服务),状态必须是“正在运行”
创建能被 DBeaver 连接的用户(不是 root)
root 用户默认绑定 localhost,且可能禁用远程登录;直接改 root 权限风险高,建议新建专用用户:
- 用 root 登录 MySQL:
mysql -u root -p - 执行:
CREATE USER 'dbeaver_user'@'%' IDENTIFIED BY 'YourStrongPass123!'; - 授权:
GRANT SELECT, INSERT, UPDATE, DELETE ON *.* TO 'dbeaver_user'@'%';(不用ALL PRIVILEGES,除非真需要管理权限) - 刷新:
FLUSH PRIVILEGES; - 退出后,用新用户测试:
mysql -u dbeaver_user -p -h 127.0.0.1,能进就说明用户和认证方式 OK
DBeaver 连接时必须调整的两个关键参数
即使用户名密码都对,MySQL 8.0+ 默认拒绝公钥自动获取,Public Key Retrieval is not allowed 错误就是它 —— 不是驱动没装,是连接参数没配对:
- 在 DBeaver 新建 MySQL 连接的「编辑驱动设置」或「连接属性」页,找到
allowPublicKeyRetrieval,值设为true - 同时把
useSSL设为false(开发环境无需 SSL;生产环境应配证书,而非关 SSL) - 如果还报
Client does not support authentication protocol,说明用户用了旧版认证插件,需在 MySQL 里执行:ALTER USER 'dbeaver_user'@'%' IDENTIFIED WITH mysql_native_password BY 'YourStrongPass123!';
驱动版本与字符集兼容性问题
DBeaver 自带驱动有时太旧(比如仍用 com.mysql.jdbc.Driver),而 MySQL 8.0+ 要求 com.mysql.cj.jdbc.Driver;另外中文乱码常因连接层未声明编码:
- 进「数据库 → 驱动管理器」,选 MySQL 驱动 → 编辑 → 确保「类名」是
com.mysql.cj.jdbc.Driver,不是带jdbc不带cj的旧版 - 在连接属性里加参数:
characterEncoding=utf8mb4和serverTimezone=Asia/Shanghai(避免时间戳错位) - 如果驱动列表里没有 MySQL,点「下载/更新」按钮,DBeaver 会自动拉取最新
mysql-connector-javaJAR 包
最易被忽略的是:MySQL 配置文件(/etc/my.cnf 或 my.ini)里 bind-address 必须放开,skip-networking 必须注释掉 —— 即使你只打算本地用 DBeaver,这个配置不对,127.0.0.1 也会连不上。


















