如何找回DBeaver中存储的数据库密码
🔓 实战指南:如何找回 DBeaver 中存储的数据库密码
适用版本:DBeaver 6.1.3 及以上版本
适用系统:Windows / Linux / macOS (需安装 OpenSSL)
在日常开发中,我们经常使用 DBeaver 这款强大的开源数据库管理工具。为了方便,我们通常会勾选“保存密码”,但时间久了难免会忘记原始密码。DBeaver 并没有提供直接的“显示明文”按钮,而是将密码加密存储在本地。
本文将教你如何利用 OpenSSL 工具,通过解密配置文件的方式,找回那些被遗忘的数据库密码。
第一步:定位工作空间路径 🗺️
DBeaver 的密码并非存储在安装目录下,而是保存在用户的工作空间(Workspace)中。首先我们需要找到这个路径。
- 打开 DBeaver 软件。
- 点击菜单栏的 “窗口 (Window)” -> “首选项 (Preferences)”。
- 在左侧导航栏找到 “常规 (General)” -> “工作空间 (Workspace)”。
- 查看右侧的 “工作空间路径 (Workspace path)”。
💡 提示:在 Windows 系统中,该路径通常位于
C:\Users\<你的用户名>\AppData\Roaming\DBeaverData\workspace6。
第二步:找到加密配置文件 🔑
获取到路径后,我们需要找到存放密码的加密文件。
- 打开文件管理器,进入上述的“工作空间路径”。
- 依次进入子目录:General -> .dbeaver。
- 注:.dbeaver 是一个隐藏文件夹,在 Linux/macOS 下需按 Ctrl+H 显示隐藏文件。
- 在该目录下,找到名为
credentials-config.json的文件。- 建议:在进行任何操作前,先复制一份该文件作为备份,防止误操作导致配置丢失。
第三步:利用 OpenSSL 解密密码 🛠️
DBeaver 使用 AES-128-CBC 算法对密码进行加密。幸运的是,DBeaver 使用的加密 Key 和 IV 是固定的(硬编码),这使得我们可以通过特定的命令进行逆向解密。
请在终端(Terminal)或命令行(CMD/PowerShell/Git Bash)中执行以下命令:
1 | openssl aes-128-cbc -d \ |
命令参数深度解析:
| 参数 | 含义 | 说明 |
|---|---|---|
-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 | { |
⚠️ 安全与免责声明
- 仅限授权操作:此方法仅适用于你拥有合法权限的设备和数据库。未经授权尝试解密他人数据属于违法行为。
- 隐私风险:DBeaver 的这种加密方式(固定 Key)虽然方便了用户找回密码,但也意味着一旦电脑失窃,数据库密码极易被破解。对于极高敏感度的数据,建议不要勾选“保存密码”。
- 环境依赖:Windows 用户若提示
openssl或dd命令不存在,建议使用 Git Bash 或 WSL (Windows Subsystem for Linux) 来执行命令。
💡 针对 Windows 用户的替代方案
如果安装 OpenSSL 环境过于麻烦,参考文章中还提到了使用 Java 编写的解密工具或脚本,或者使用在线解密工具(需谨慎上传敏感数据)。但使用 OpenSSL 命令行是目前最直接且无需额外下载软件的方法。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 From Zero to Hero!