DBeaver不支持真正的“无密码临时会话”模式;勾选“不保存密码”仅阻止写入data-sources.json,但密码仍可能缓存在内存或系统凭据库(如Windows CredMan),且测试/完成连接后可能已加密落盘至credentials-config.json,重启后仍可自动连接,存在泄露风险。

直接说结论:DBeaver 本身不支持“无密码临时会话”模式,但可以通过禁用凭证持久化 + 手动清空敏感字段实现真正不留痕的临时连接。
为什么“不保存密码”选项不能完全防泄露
勾选连接配置里的“不保存密码”只是阻止密码写入 data-sources.json,但 DBeaver 仍可能将密码缓存在内存或本地安全存储(如 Windows CredMan、macOS Keychain)中,尤其在快速重连时。更关键的是,一旦你点过“测试连接”或“完成”,DBeaver 就可能已触发凭证服务的自动加密落盘行为——哪怕 UI 上没勾选“保存密码”。
- 现象:重启 DBeaver 后,该连接仍能自动连上
- 原因:凭证已被写入
.dbeaver/credentials-config.json或系统级凭据库 - 风险:共享电脑上其他用户可能通过进程内存 dump 或凭据管理器导出获取明文
真正不留密码的三步操作法
必须同时切断配置层、运行时层、存储层三个入口:
- 新建连接时,在“用户凭证”页取消勾选
Save password和Use shared credentials - 点击“驱动属性”页,手动添加参数:
allowPublicKeyRetrieval=true(避免因公钥问题反复弹窗输密) - 连接成功后,立即关闭该连接标签页,并在连接管理器中右键 →
Delete(不是“断开”,是彻底删除连接定义) - 最后一步关键动作:退出 DBeaver 前,执行菜单
File → Secure Storage → Clear All Credentials(此操作会清空当前工作区所有加密凭据缓存)
临时连接还能用环境变量绕过密码输入吗
可以,但有硬限制:DBeaver 的环境变量占位符(如 ${DB_PASS})只在连接建立时解析一次,且不会触发凭证服务存储逻辑。这意味着:
- 你得提前在操作系统里设好
export DB_PASS="xxx"(Linux/macOS)或系统环境变量(Windows) - 连接配置中用户名填
${DB_USER}、密码填${DB_PASS},DBeaver 会原样代入 - 但注意:
data-sources.json导出后仍是"password": "${DB_PASS}",不暴露明文,也**不会被自动解密存档** - 缺点:换机器或新终端需重新设环境变量;不适用于 GUI 启动方式(如 macOS 双击图标)
最易被忽略的一点:即使你删了连接、清了凭据,DBeaver 的 .dbeaver/.data-sources.json 文件仍可能残留空密码字段("password": "")或 SSH 私钥路径字段("sshPrivateKeyFile": "/tmp/key")。这些字段虽不存密,但会暴露连接意图和路径结构——在高度敏感的共享环境里,建议连接用完后手动检查并清空该文件中的敏感字段值。











