🔓 实战指南:如何找回 DBeaver 中存储的数据库密码

适用版本:DBeaver 6.1.3 及以上版本
适用系统:Windows / Linux / macOS (需安装 OpenSSL)

在日常开发中,我们经常使用 DBeaver 这款强大的开源数据库管理工具。为了方便,我们通常会勾选“保存密码”,但时间久了难免会忘记原始密码。DBeaver 并没有提供直接的“显示明文”按钮,而是将密码加密存储在本地。

本文将教你如何利用 OpenSSL 工具,通过解密配置文件的方式,找回那些被遗忘的数据库密码。

第一步:定位工作空间路径 🗺️

DBeaver 的密码并非存储在安装目录下,而是保存在用户的工作空间(Workspace)中。首先我们需要找到这个路径。

  1. 打开 DBeaver 软件。
  2. 点击菜单栏的 “窗口 (Window)” -> “首选项 (Preferences)”
  3. 在左侧导航栏找到 “常规 (General)” -> “工作空间 (Workspace)”
  4. 查看右侧的 “工作空间路径 (Workspace path)”

💡 提示:在 Windows 系统中,该路径通常位于 C:\Users\<你的用户名>\AppData\Roaming\DBeaverData\workspace6

第二步:找到加密配置文件 🔑

获取到路径后,我们需要找到存放密码的加密文件。

  1. 打开文件管理器,进入上述的“工作空间路径”。
  2. 依次进入子目录:General -> .dbeaver
    • 注:.dbeaver 是一个隐藏文件夹,在 Linux/macOS 下需按 Ctrl+H 显示隐藏文件。
  3. 在该目录下,找到名为 credentials-config.json 的文件。
    • 建议:在进行任何操作前,先复制一份该文件作为备份,防止误操作导致配置丢失。

第三步:利用 OpenSSL 解密密码 🛠️

DBeaver 使用 AES-128-CBC 算法对密码进行加密。幸运的是,DBeaver 使用的加密 Key 和 IV 是固定的(硬编码),这使得我们可以通过特定的命令进行逆向解密。

请在终端(Terminal)或命令行(CMD/PowerShell/Git Bash)中执行以下命令:

1
2
3
4
5
openssl aes-128-cbc -d \
-K babb4a9f774ab853c96c2d653dfe544a \
-iv 00000000000000000000000000000000 \
-in credentials-config.json | \
dd bs=1 skip=16 2>/dev/null

命令参数深度解析:

参数 含义 说明
-d 解密模式 表示执行 Decrypt 操作。
-K 密钥 (Key) DBeaver 硬编码的 AES-128 密钥,固定为 babb4a9f...
-iv 初始向量 DBeaver 使用全零的 IV。
dd bs=1 skip=16 跳过头部 OpenSSL 默认输出包含 Salt 头部信息,跳过前 16 字节获取纯净 JSON。
2>/dev/null 隐藏报错 屏蔽 dd 命令执行时的统计信息噪音。

第四步:查看明文密码 👀

执行上述命令后,终端将输出解密后的 JSON 字符串。虽然看起来可能是一团乱麻,但你只需要寻找 # connection 字段下的 password 即可。

输出示例:

1
2
3
4
5
6
7
8
9
{
"mysql8-1863550ad2c-6eb49f48e6ae763d": {
"# connection": {
"user": "root",
"password": "MyRealPassword123", // <-- 这里就是你的密码
"url": "jdbc:mysql://localhost:3306/"
}
}
}

⚠️ 安全与免责声明

  1. 仅限授权操作:此方法仅适用于你拥有合法权限的设备和数据库。未经授权尝试解密他人数据属于违法行为。
  2. 隐私风险:DBeaver 的这种加密方式(固定 Key)虽然方便了用户找回密码,但也意味着一旦电脑失窃,数据库密码极易被破解。对于极高敏感度的数据,建议不要勾选“保存密码”。
  3. 环境依赖:Windows 用户若提示 openssldd 命令不存在,建议使用 Git BashWSL (Windows Subsystem for Linux) 来执行命令。

💡 针对 Windows 用户的替代方案

如果安装 OpenSSL 环境过于麻烦,参考文章中还提到了使用 Java 编写的解密工具或脚本,或者使用在线解密工具(需谨慎上传敏感数据)。但使用 OpenSSL 命令行是目前最直接且无需额外下载软件的方法。