1. 这不是简单的“复制粘贴”,而是数据库连接资产的完整迁移
DBeaver 是我日常工作中打开频率最高的桌面应用之一——没有之一。它不像浏览器那样只是“用一下”,而是承载着几十个生产环境、测试库、本地开发实例的连接凭证、SQL模板、历史执行记录,甚至还有自定义的元数据过滤规则和结果集格式化偏好。这些配置加起来,已经不是“设置”二字能概括的,而是一整套个人数据库工作流的数字分身。很多人第一次换电脑时,下意识地以为只要重装 DBeaver、再一个个手动填一遍 JDBC URL 和密码就行,结果花两小时配完,第三天发现某个 Oracle 连接里漏掉了关键的oracle.net.wallet_location参数,导致 SSL 连接失败;又或者 PostgreSQL 连接里没同步SSL Mode=Require和对应的证书路径,连不上内网集群。更隐蔽的问题是:DBeaver 的“连接配置”远不止 connection.xml 里的那些字段——它还深度耦合在工作空间(workspace)目录下的.metadata、.dbeaver隐藏文件夹里,涉及驱动缓存、最近打开的 SQL 编辑器状态、甚至是自定义的 ER 图布局。所以,“导出连接配置并迁移到新电脑”这件事,本质是一次轻量级但高精度的开发者工作环境克隆,核心诉求有三个:第一,确保所有连接能 100% 复现,包括冷门数据库(如 Informix、Firebird)的特殊驱动参数;第二,保留连接分组、图标标记、别名等组织结构,避免在新环境里面对 50+ 个无序排列的连接名抓瞎;第三,不泄露敏感信息,比如明文密码或私钥路径。这正是为什么单纯拷贝connections.json或导出 XML 文件常会失败——你导出的只是“骨架”,而真正让连接活起来的“神经和肌肉”,藏在 workspace 的毛细血管里。接下来我会从底层目录结构开始拆解,告诉你哪些文件必须搬、哪些可以跳过、哪些看似安全实则危险,以及如何用一条命令完成 95% 的自动化迁移,最后再补上那 5% 手动校验的关键动作。
2. 深度解析 DBeaver 的配置存储机制:为什么“导出”二字容易误导人
2.1 配置不是集中存放,而是三层嵌套式分布
DBeaver 的配置体系绝非一个“设置中心”,而是典型的 Eclipse 衍生架构——高度模块化、多层级、强依赖工作空间(workspace)。很多用户卡在第一步,就是误判了配置的物理位置。我们先明确三个核心概念:
全局配置(Global Settings):位于用户主目录下的
.dbeaver4(Windows 是%APPDATA%\DBeaverData,macOS 是~/Library/DBeaverData),这里存放的是软件级设置,比如字体大小、主题、SQL 编辑器快捷键、默认驱动下载源。这部分对连接迁移影响极小,除非你重度定制了 SQL 格式化规则或自定义了 JDBC 驱动仓库地址。工作空间配置(Workspace Settings):这是迁移的核心战场。当你首次启动 DBeaver 时,它会提示你选择一个工作空间目录(默认是
~/DBeaverData或C:\Users\XXX\DBeaverData)。这个目录下藏着所有连接的“生命体征”:General/.dbeaver/data-sources.json:这是最常被提及的“连接配置文件”,但它只保存连接的基本元数据(名称、URL、驱动类型、用户名),不包含密码、SSL 证书路径、高级连接属性(如 Oracle 的 TNS alias、MySQL 的 useSSL=true)、甚至不保存连接所属的文件夹分组结构。General/.dbeaver/credentials-config.json:这才是密码和敏感凭证的真正落脚点。它采用 AES 加密(密钥由 DBeaver 自行生成并绑定到当前机器),所以直接拷贝这个文件到新电脑,密码会全部失效——因为新机器的加密密钥完全不同。这也是为什么官方导出功能默认不包含密码。
项目级配置(Project Settings):如果你启用了“项目”模式(Project Explorer 视图),每个项目目录下会有
.project和.dbeaver/project-settings.json,里面可能包含该项目专属的连接定义。这种模式在团队协作中更常见,但对单机迁移影响不大,除非你明确使用了项目来组织连接。
提示:不要试图用文本编辑器直接修改
># Linux/macOS 终端(推荐,保留符号链接和权限) cd /path/to/your/DBeaverData tar -czf dbeaver-migration-backup.tar.gz .dbeaver/data-sources.json .dbeaver/credentials-config.json .dbeaver/drivers/ .dbeaver/templates/ .dbeaver/resources/# Windows PowerShell(管理员权限运行) $workspace = "C:\Users\Alice\DBeaverData" Compress-Archive -Path "$workspace\.dbeaver\data-sources.json", "$workspace\.dbeaver\credentials-config.json", "$workspace\.dbeaver\drivers", "$workspace\.dbeaver\templates", "$workspace\.dbeaver\resources" -DestinationPath "$workspace\dbeaver-migration-backup.zip"关键点说明:
- 我们只打包
>import json import os # 读取密码 CSV(假设第一行是 header) passwords = {} with open("dbeaver_passwords.csv") as f: for line in f.readlines()[1:]: # 跳过 header name, user, pwd = line.strip().split(",") passwords[name.strip()] = {"user": user.strip(), "password": pwd.strip()} # 读取># Windows PowerShell(管理员) mklink /D "C:\certs" "C:\DBeaver-Certs"# macOS/Linux ln -s /Users/Bob/DBeaver-Certs /certs批量修正连接配置:用文本编辑器(VS Code)打开
>{ "folders": [ { "id": "f1", "name": "Production", "children": ["conn-uuid-1", "conn-uuid-2"] }, { "id": "f2", "name": "Development", "children": ["conn-uuid-3"] } ] }其中
conn-uuid-*必须与>
IAP升级死机元凶:中断向量表重映射VTOR详解
1. IAP升级死机背后的真凶:从一个真实案例说起做过嵌入式产品固件升级的兄弟,大概率都经历过这种让人头皮发麻的场景:设备在实验室里跑得好好的,IAP升级流程也测了无数遍,结果一到客户现场,升级完重启&…
OpenClaw(大龙虾AI)保姆级教程!阿里云/Windows11/Mac/Linux部署+免费API配置+飞书联动自动化办公指南
/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …
Kettle Web化实战:部署、调度与避坑的完整指南
/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …
Trace‑SFT:利用智能体完整交互轨迹做监督微调,提升工具调用智能体的鲁棒性
Trace‑SFT:利用智能体完整交互轨迹做监督微调,提升工具调用智能体的鲁棒性 arXiv编号:arXiv:2609.30249v1 摘要 工具调用智能体的标准监督微调(SFT)大多只使用单轮「查询‑工具调用」样例,缺少真实多步交互…
验收要看「事办成没」,不看「按钮亮没亮」
工信部公开《「人工智能软件」专项行动实施方案》,把「智能体软件」单列成一个新形态。这个名词翻成人话是:软件不再只等用户点按钮,它理解目标、调工具、跨系统把事往前推。验收还停在按钮上,就会漏掉后半截。名字换掉之后&#…
Ubuntu下Qt环境搭建全攻略:apt与官方安装器对比及常见问题排查
/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …