DBeaver跨平台同步credentials-config.json必然失效,因运行时校验OS与Java安全提供者;唯一官方支持的跨平台方案是启用sharedCredentials后导出项目,但敏感场景应禁用并改用外部凭据管理器。

不能直接同步加密后的密码,必须分离凭证与配置,否则跨平台会解密失败。
credentials-config.json 跨平台同步必然失效
DBeaver 的 credentials-config.json 中密码使用固定密钥 "dbeaver" + SHA-256 + AES-128-CBC 加密,IV 固定为 16 个 0x00 字节。这意味着:
- 同一密码在 Windows/macOS/Linux 上加密结果完全相同 —— 看似可同步
- 但实际解密时,DBeaver 会检查当前操作系统和 Java 安全提供者是否匹配原始加密环境
- Windows → macOS 或 Linux → Windows 同步后,启动时密码字段变为空或报错
InvalidKeyException - 即使手动 Base64 解码 + OpenSSL 解密成功,DBeaver 运行时仍拒绝加载该凭据
推荐方案:启用 sharedCredentials 并导出项目
这是唯一官方支持、跨平台稳定、且不暴露明文密码的同步路径:
- 在源设备上,右键目标连接 → “编辑连接” → 切换到“凭证”页 → 勾选
共享凭证(即设置sharedCredentials=true) - 此时密码不再存入
credentials-config.json,而是以明文(但仅限本地文件内)写入项目配置.dbeaver-data-sources.xml - 通过菜单栏
文件 > 导出项目,生成.dbae文件(含连接定义 + 共享凭证) - 在目标设备导入时,DBeaver 会自动识别
sharedCredentials标记,并将密码载入内存,不触发平台绑定解密流程 - 注意:导出时若勾选“加密项目”,密码会被二次加密,导入需输密码 —— 此时反而失去跨平台兼容性,不建议启用
敏感场景下必须禁用 sharedCredentials
当团队协作或配置需提交 Git 时,绝不能依赖 sharedCredentials,因为:
-
.dbeaver-data-sources.xml中的密码是 Base64 编码的明文(无加密),仅靠文件权限保护 - 一旦泄露,等同于泄露数据库账号密码
- 正确做法是:保持
sharedCredentials=false(默认),让密码始终走安全存储;导出项目时选择“不包含凭证”,再由各成员单独输入密码 - 如需自动化部署,应改用外部凭据管理器(如 HashiCorp Vault)配合 DBeaver CLI 插件,而非同步密码本身
真正难的不是复制文件,而是判断哪些密码能“带过去”、哪些必须重输 —— 这个边界由 sharedCredentials 的布尔值决定,且无法事后修补。











