DBeaver不支持安全共享连接密码,因其明文存储、导出含密不安全、无中央管理机制;应改用环境变量、Vault、SSH隧道或临时令牌等外部托管方式。

团队共用连接密码时,DBeaver 本身不支持安全共享
DBeaver 的连接配置默认把密码明文存进 data-sources.json(加密后仍可被本地用户解出),导出 JSON 时默认不包含密码,且没有内置的中央密码库或权限分级机制。所谓“共用密码”,实际是团队成员各自在本地保存同一套凭据——这本质上不是共享,而是复制,风险点很明确:密码泄露、版本不同步、无法及时吊销。
为什么不能直接导出带密码的连接配置
导出时勾选 Include passwords 确实能让 JSON 文件含密码字段,但:
• 该密码是 Base64 编码+简单混淆,不是加密,用脚本几行就能还原
• 文件一旦发到 IM 或 Git,密码即失控
• 不同 DBeaver 版本对密码字段的处理逻辑可能不一致,导入后常出现 Authentication failed 却查不出原因
• 密码修改后,所有成员必须手动同步更新,没人能保证“这次大家都改了”
可行的替代方案:绕过 DBeaver 存密,交由外部机制托管
真正降低风险的做法,是让 DBeaver 完全不碰密码明文:
- 用环境变量注入:在启动 DBeaver 前设置
DB_PASSWORD=xxx,连接配置中用户名填${env:DB_PASSWORD}(需开启“变量替换”选项) - 对接 Vault 类工具:通过 shell 脚本调用
vault read -field=password secret/db/prod,输出重定向给 DBeaver 的 JDBC URL 参数(适用于 Linux/macOS 自动化场景) - 使用 SSH 隧道 + OS 认证:关闭数据库密码认证,改用
pg_hba.conf或my.cnf配置基于 IP+SSH key 的信任链,DBeaver 连接时完全不输密码 - 临时令牌替代长期密码:比如 Azure Databricks 要求用
token,就配成user: token+password: dapi_xxx,并配合 CI/CD 定期刷新 token,避免硬编码
如果必须本地共用,至少守住这两条底线
现实里有些小团队仍选择共享配置文件,那请确保:
- 工作区目录(
.dbeaver)不纳入 Git,且用chmod 700锁定权限(Linux/macOS)或取消继承权限(Windows) - 所有连接统一启用
sslmode=require(PostgreSQL)或useSSL=true(MySQL),防止密码在传输中被嗅探 - 禁用 DBeaver 的“保存密码到操作系统密钥环”选项——Windows Credential Manager 和 macOS Keychain 在多用户机器上反而扩大泄露面
密码不是配置的一部分,而是访问策略的执行结果。把密码当配置传,迟早会遇到谁删了文件、谁改了字段、谁用手机拍了截图的问题。


















