DBeaver默认导出不包含密码是安全设计而非缺陷,因自7.0版起凭据与元数据分离存储:连接信息存于data-sources.json(无密码字段),密码加密后单独存于data-sources-auth.json或credentials-config.json中。

默认导出就不带密码,这是 DBeaver 的安全设计,不是 bug,是 feature。如果你导出了带密码的文件,反而要警惕是否误启用了危险选项。
为什么导出的 data-sources.json 里没有密码字段
DBeaver 从 7.0 版本起彻底分离了连接元数据和认证凭据:前者存于 data-sources.json(明文可读),后者加密后单独存在 credentials-config.json 或 data-sources-auth.json 中。图形界面导出时,默认只走第一层,不触碰凭据文件——所以你看到的 JSON 里压根不会有 "password" 字段,连占位符都没有。
- 这是为了防止配置文件误传、误提交到 Git 或共享给他人时泄露密码
- 即使你勾选了“Include passwords”,实际写入的也是加密后的密文,不是明文密码
- 不同 DBeaver 版本对凭据文件的命名和位置有差异:
data-sources-auth.json常见于 23.0+,credentials-config.json多见于 21.x–22.x
用 File → Export → Connection configuration 导出时的关键操作
这个路径导出的是标准、轻量、可审计的连接定义,适合团队分发或 CI/CD 环境复用。它生成一个纯 JSON 文件,不含任何二进制或加密内容。
- 导出前确认向导第 2 步中「Include passwords」选项是未勾选状态(默认就是关闭的)
- 导出文件里只会包含
host、port、databaseName、driver等非敏感字段 - 如果目标环境需要自动填密码,不能靠这个文件实现;得改用项目导出(
.dbae)或手动复制凭据文件 - 该方式导出的 JSON 可直接用
jq或 Python 脚本做批量校验或参数替换,比如统一改测试库前缀
误开密码导出后怎么快速清理风险
如果你在导出时手滑勾了「Include passwords」,且导出文件已流出,别只删文件——加密凭据仍可能被离线爆破(尤其弱口令)。必须立刻执行以下动作:
- 检查导出的 JSON 文件里是否存在
"authModel"、"password"或"secure"类字段(哪怕值是"***"或 base64 字符串) - 在旧电脑上打开 DBeaver → 连接编辑页 → 切换到「Connection settings → Authentication」→ 点击「Clear saved credentials」
- 重启 DBeaver,它会清空内存缓存并重写
credentials-config.json,旧加密密钥即失效 - 新电脑导入前,确保目标 DBeaver 版本 ≥ 导出端版本,否则加密格式不兼容会导致连接失败
真正容易被忽略的是凭据文件的生命周期管理:DBeaver 不提供密码过期或轮换提醒,credentials-config.json 一旦生成就长期有效。定期手动清空再重输密码,比依赖一次导出更可控。


















