DBeaver 26.2.3 数据库连接与操作实战
DBeaver 26.2.3 连接 PostgreSQL 16/MySQL 8 的实战记录:驱动自动下载与缓存、-con 命令行连接、SQL 编辑器 Alt+X 脚本执行并服务端验证落库,含 Public Key Retrieval、database root does not exist 等真实排障与 data-sources.json 结构实录。
DBeaver 26.2.3 数据库连接与操作实战
目标:以 DBeaver Community 26.2.3(Ubuntu 22.04)为客户端,完整走通「连接 PostgreSQL 16 与 MySQL 8 → 驱动自动下载 → SQL 编辑器建表插数 → 服务端验证落库」的实战闭环,并沉淀首连必踩的
Public Key Retrieval、database "root" does not exist等真实排障过程。本文所有命令、界面状态与服务端回显均为实测记录。
一、环境信息
| 角色 | 软件/版本 | 地址 | 说明 |
|---|---|---|---|
| 客户端 | DBeaver Community 26.2.3(构建号 26.2.3.202610181708) | 桌面机 10.89.61.6 | Ubuntu 22.04,安装方式见《Ubuntu 22.04 安装 DBeaver 26.2.3 指南》 |
| 目标库 A | PostgreSQL 16.15 | 10.89.61.4:5432 | 业务库 appdb,演示账号 root / q1w2e3r4,测试表 staff(5 行种子数据) |
| 目标库 B | MySQL 8.0.46 | 10.89.61.5:3306 | 业务库 appdb,演示账号 root / q1w2e3r4,同名测试表 staff |
| 驱动仓库 | Maven Central(repo.maven.apache.org) | 客户端直连 | 首次连接时自动下载 JDBC 驱动 |
💡 说明:
root/q1w2e3r4为本文演示用的固定测试口令;连接参数中的10.89.61.4/5/6为内网实测地址,读者按自己环境的库地址与账号替换即可,操作流程完全一致。
二、前置条件
- DBeaver 26.2.3 已安装并可正常启动(安装与首次启动排障见《Ubuntu 22.04 安装 DBeaver 26.2.3 指南》);
- 客户机与目标库网络互通(3306/5432 端口可达);
- 客户机可访问 Maven Central(驱动自动下载需要;离线环境改为手动导 jar,见八、Q4);
- 目标库的账号具备建表/插数权限(本文演示直接用
root)。
三、首次启动与驱动管理机制
首次启动 DBeaver 会进入「Configure DBeaver」配置向导(选择界面语言等选项),逐页保持默认、点击 Apply 完成即进入主界面。主界面连接树中自带一个示例连接「DBeaver Sample Database (SQLite)」(示例 SQLite 库随包分发),可用于零配置熟悉界面。
驱动的关键机制:DBeaver 内置的是「驱动定义」(本环境启动日志实测 Total database drivers: 139),JDBC jar 本体在首次连接对应数据库时从 Maven Central 下载,缓存到用户数据目录 ~/.local/share/DBeaverData/drivers/maven/maven-central/。本环境连完 PostgreSQL 与 MySQL 后的驱动缓存实录:
/root/.local/share/DBeaverData/drivers/maven/maven-central/com.github.ben-manes.caffeine/caffeine-3.1.8.jar
/root/.local/share/DBeaverData/drivers/maven/maven-central/com.mysql/mysql-connector-j-8.2.0.jar
/root/.local/share/DBeaverData/drivers/maven/maven-central/net.bytebuddy/byte-buddy-1.15.11.jar
/root/.local/share/DBeaverData/drivers/maven/maven-central/net.java.dev.jna/jna-5.16.0.jar
/root/.local/share/DBeaverData/drivers/maven/maven-central/net.postgis/postgis-jdbc-2.5.0.jar
/root/.local/share/DBeaverData/drivers/maven/maven-central/org.postgresql/postgresql-42.7.13.jar
/root/.local/share/DBeaverData/drivers/maven/maven-central/org.slf4j/slf4j-api-2.0.16.jar
...(共 17 个 jar,含校验/日志等依赖)
💡 说明:PostgreSQL 对应
org.postgresql:postgresql驱动(实测下载 42.7.13 版),MySQL 对应com.mysql:mysql-connector-j(实测 8.2.0 版);驱动版本由 DBeaver 内置的驱动定义锁定,可在 GUI 的 Database → Driver Manager 中查看每个驱动的 jar 清单与 Maven 坐标。备份该目录即可让离线机器跳过在线下载。
四、连接 PostgreSQL 实战
4.1 图形向导方式(推荐)
- 菜单 Database → New Database Connection(或主界面「新建连接」图标),数据库类型选 PostgreSQL,Next;
- Main 标签页填写:Host
10.89.61.4、Port5432、Databaseappdb、Usernameroot、Passwordq1w2e3r4,勾选 Save password; - 点击 Test Connection …:首次会弹出「Download driver files」确认框(提示下载 PostgreSQL 驱动文件),点击 Download,进度条完成后即返回连接成功提示;
- Finish 保存后,连接树出现以库名标识的 PostgreSQL 连接节点,展开可浏览
appdb的模式、表、视图等对象。
4.2 命令行带参启动(一步到位)
DBeaver 支持通过 -con 参数在启动时直接创建连接(临时连接形态,见七、7.3 的实测结论):
dbeaver -nosplash -con "driver=postgresql|host=10.89.61.4|port=5432|database=appdb|user=root|password=q1w2e3r4"
首次执行时界面弹出「Download driver files — Download PostgreSQL driver files」确认框,点击 Download 后驱动开始下载,随后自动完成连接。连接树实测出现节点:
Ext: PostgreSQL - appdb 10.89.61.4:5432
⚠️ 排障实录(库名参数键写错):若把库名键写成
db=,参数会被静默忽略,连接退回「用用户名当库名」的默认行为,实测报错(工作区日志原文):!MESSAGE FATAL: database "root" does not exist org.postgresql.util.PSQLException: FATAL: database "root" does not exist解决:库名的正确键是
database=(不是db=)。-con的完整键位说明见《DBeaver 26.2.3 配置与 CLI 参数详解》。
4.3 服务端视角验证连接
在 PostgreSQL 服务端查询活动会话,确认 DBeaver 客户端真实连入(实测回显):
SELECT application_name, client_addr, state
FROM pg_stat_activity WHERE application_name LIKE 'DBeaver%';
application_name | client_addr | state
----------------------------------+-------------+-------
DBeaver 26.2.3 - Main <appdb> | 10.89.61.6 | idle
DBeaver 26.2.3 - Metadata <appdb> | 10.89.61.6 | idle
💡 说明:DBeaver 每个已连接的库会保持两条会话——
- Main(数据/查询)与- Metadata(元数据浏览),application_name自带「DBeaver <版本> - <用途> <库名>」标识,服务端排查客户端来源时非常直观。- Metadata会话在无元数据操作时可能按连接池策略消失,属正常现象。
五、连接 MySQL 实战
5.1 首连与报错
同样支持图形向导(New Database Connection → MySQL)与 -con 两种方式。用 -con 实测:
dbeaver -con "driver=mysql|host=10.89.61.5|port=3306|database=appdb|user=root|password=q1w2e3r4"
驱动下载(mysql-connector-j-8.2.0.jar)完成后,连接报错弹窗:
Public Key Retrieval is not allowed
工作区日志原文节选:
!ENTRY org.jkiss.dbeaver.model 4 0 2026-10-20 03:29:44.757
!MESSAGE Public Key Retrieval is not allowed
!STACK 0
com.mysql.cj.exceptions.UnableToConnectException: Public Key Retrieval is not allowed
at java.base/jdk.internal.reflect.DirectConstructorHandleAccessor.newInstance(Unknown Source)
at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Unknown Source)
5.2 原因与三种修复
原因:MySQL 8.0 默认认证插件 caching_sha2_password,在未加密连接上首次认证需要向服务端请求 RSA 公钥加密传输口令;Connector/J 8 默认 allowPublicKeyRetrieval=false(防中间人),于是直接拒绝。
- 修复 A(GUI,推荐):连接设置 → Driver properties 标签页,将
allowPublicKeyRetrieval设为true、useSSL设为false(内网测试环境),保存重连; - 修复 B(CLI,
url=直带 JDBC 参数,实测可行):
dbeaver -con "driver=mysql|url=jdbc:mysql://10.89.61.5:3306/appdb?allowPublicKeyRetrieval=true&useSSL=false|user=root|password=q1w2e3r4"
连接成功,连接树出现 Ext: MySQL 节点。注意两点实测结论:直接把 allowPublicKeyRetrieval=true 当独立键写进 -con 规格串不生效;authProp.allowPublicKeyRetrieval=true 语法同样不生效(该前缀用于认证模型参数,不是 JDBC 属性)——JDBC 属性必须经 url= 或 GUI Driver properties 传入。
- 修复 C(服务端换认证插件):把演示账号改为
mysql_native_password后普通连接即可:
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'q1w2e3r4';
FLUSH PRIVILEGES;
💡 技术拓展:MySQL 8 认证插件常见选项对比——
插件 特点 适用场景 caching_sha2_password MySQL 8.0 起默认,安全性好(SHA256+ salts/RSA) 现代客户端均支持,首选 mysql_native_password 老式挑战应答,兼容旧客户端 老驱动/老工具过渡期 sha256_password 全程 RSA/SSL 加密口令,无缓存 高安全要求且连接频繁建断 本文实际采用「保留 caching_sha2_password + 客户端加
allowPublicKeyRetrieval=true」,因为这是官方推荐的现代组合,只改客户端参数、不动服务端安全基线。
5.3 服务端视角验证连接
MySQL 服务端确认 DBeaver 会话(实测回显):
SHOW PROCESSLIST;
+----+------+-------------------+-------+---------+------+-------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+----+------+-------------------+-------+---------+------+-------+------------------+
| 16 | root | 10.89.61.6:47382 | appdb | Sleep | 22 | | NULL |
| 17 | root | 10.89.61.6:47384 | appdb | Sleep | 22 | | NULL |
+----+------+-------------------+-------+---------+------+-------+------------------+
客户端地址 10.89.61.6、目标库 appdb 与预期一致,连接真实建立。
六、SQL 编辑器操作实战
6.1 打开编辑器并关联连接
DBeaver 的 SQL 编辑器与连接绑定。图形方式:选中连接节点 → SQL Editor → New SQL editor(快捷键 F3),编辑器标签自动标注所属连接与库名。命令行方式可一步「开编辑器 + 加载脚本 + 绑定连接」:
dbeaver -f /root/staff-insert.sql -con "driver=postgresql|host=10.89.61.4|port=5432|database=appdb|user=root|password=q1w2e3r4"
脚本内容(/root/staff-insert.sql):
-- via DBeaver SQL editor (Alt+X execute script)
INSERT INTO staff (first_name,last_name,dept,salary) VALUES ('Frank','Zhao','engineering',17250.00);
SELECT id, first_name, last_name, dept, salary FROM staff ORDER BY id;
实测编辑器标题栏显示 <Ext: PostgreSQL - appdb> staff-insert.sql,工具栏出现 Commit/Rollback/Auto 图标,状态栏显示连接可写(Writable)。
6.2 执行脚本并验证落库
- Ctrl+Enter:执行光标所在的当前语句;
- Alt+X(Execute SQL Script):按顺序执行整个脚本的多条语句(实测本节采用)。
在编辑器聚焦状态下按 Alt+X,编辑器下方依次出现 Statistics 与结果集网格:INSERT 返回影响行数 1,SELECT 网格返回 staff 全表 6 行(含新插入的 Frank,标签页 staff 1,实测查询耗时 122 ms)。
服务端独立验证数据真实落库(实测回显):
SELECT id, first_name, dept, salary FROM staff ORDER BY id;
id | first_name | dept | salary
----+------------+-------------+----------
1 | Alice | engineering | 18500.00
2 | Bob | sales | 12800.50
3 | Carol | engineering | 21000.00
4 | Dave | support | 9800.75
5 | Eve | sales | 13500.00
6 | Frank | engineering | 17250.00
(6 rows)
6.3 事务与结果网格编辑
- 自动提交:
dev连接类型默认auto-commit: true(见七、7.2 的配置文件实录),脚本执行后立即生效;切到手动模式(工具栏 Auto 下拉)时,用 Commit/Rollback 图标显式提交或回滚; - 网格直接编辑:结果集网格中双击单元格即可修改,Ctrl+S(或 Commit 图标)生成并执行 UPDATE——修改的是结果集对应的表行,改动即时反映到服务端;
- 查询历史:SQL Editor → Query History(默认保留近期执行过的语句与耗时),误关编辑器也能找回。
七、连接配置持久化与 data-sources.json
7.1 持久化文件位置
图形向导创建并保存的连接持久化在工作区项目目录:~/.local/share/DBeaverData/workspace6/General/.dbeaver/data-sources.json(明文 JSON;保存的密码不以明文存放在此文件,由 DBeaver 加密保存)。文件为标准 JSON,connections 按连接 ID 组织。
7.2 文件结构实录
本环境实测的 data-sources.json(含自带示例连接与默认连接类型,可直接对照理解字段):
{
"folders": {},
"connections": {
"dbeaver-sample-database-sqlite-1": {
"provider": "sqlite",
"driver": "sqlite_jdbc",
"name": "DBeaver Sample Database (SQLite)",
"save-password": true,
"show-system-objects": true,
"configuration": {
"database": "/root/.local/share/DBeaverData/workspace6/.metadata/sample-database-sqlite-1/Chinook.db",
"url": "jdbc:sqlite:/root/.local/share/DBeaverData/workspace6/.metadata/sample-database-sqlite-1/Chinook.db",
"configurationType": "MANUAL",
"type": "dev"
}
}
},
"connection-types": {
"dev": {
"name": "Development",
"color": "255,255,255",
"colorDark": "255,255,255",
"description": "Regular development database",
"auto-commit": true,
"confirm-execute": false,
"confirm-data-change": false,
"smart-commit": false,
"smart-commit-recover": true,
"auto-close-transactions": true,
"close-transactions-period": 1800,
"auto-close-connections": true,
"close-connections-period": 14400,
"security": {"permission-restrictions": []}
}
}
}
逐项说明:
connections.<id>.provider/driver:数据库供应商与驱动定义 ID(PostgreSQL 为postgresql/postgresql_jdbc,MySQL 为mysql/mysql8),决定用哪个内置驱动连接;configuration:连接参数本体,configurationType: MANUAL表示手工填写(对应url方式则为 URL 型),type指向connection-types里的行为模板;connection-types.dev:连接行为模板——auto-commit(自动提交)、auto-close-connections(空闲 14400 秒即 4 小时后自动断开)、auto-close-transactions(未提交事务 1800 秒后自动处理)等,GUI 的 Preferences → Connections 即改这里;- 迁移连接就是迁移此文件:把
data-sources.json复制到新机器同路径(或另一工作区同位置)即可带上全部连接。
7.3 -con 临时连接不落盘(实测结论)
通过命令行 -con 创建的连接在连接树里以 Ext: <类型> 前缀显示,是临时连接:重启 DBeaver 后消失,且不会写入 data-sources.json。实测验证:带 name=PG-App 与 savePassword=true 的 -con 命令执行后,grep -c "PG-App" data-sources.json 结果为 0。需要长期保留的连接请用图形向导创建(4.1 方式)。
八、常见错误速查
Q1:FATAL: database "root" does not exist(PostgreSQL)
-con 参数把库名写成了 db=(被静默忽略,回退用用户名当库名)。正确键为 database=(见四、4.2)。
Q2:Public Key Retrieval is not allowed(MySQL 8)
caching_sha2_password 在非 SSL 连接上需要 RSA 公钥,Connector/J 默认禁止主动拉取。按五、5.2 三种修复任选其一;推荐 GUI Driver properties 设 allowPublicKeyRetrieval=true(生产环境建议改走 SSL,而不是关闭安全约束)。
Q3:FATAL: password authentication failed for user "root"(PostgreSQL)
口令错误,实测日志:
!MESSAGE FATAL: password authentication failed for user "root"
org.postgresql.util.PSQLException: FATAL: password authentication failed for user "root"
核对连接设置中的用户名/口令;服务端 pg_hba.conf 的认证方式(md5/scram-sha-256)与客户端驱动能力也需匹配。
Q4:首次连接卡在「Download driver files」或下载失败
客户机访问不了 Maven Central。离线方案:在能联网的机器上装一次 DBeaver 并完成同类型连接,把 ~/.local/share/DBeaverData/drivers/ 整目录拷贝到离线机同路径;或在 GUI 的 Database → Driver Manager → <驱动> → Libraries 中手动添加本地 jar。
Q5:连接树里 Ext: 开头的连接重启后不见了
Ext: 连接是 -con 临时连接,设计上不持久化(见七、7.3);要用图形向导建持久连接。
九、参考链接
- 官方连接文档:https://dbeaver.com/docs/dbeaver/Creating-connection/
- 驱动管理文档:https://dbeaver.com/docs/dbeaver/Driver-Manager/
- 命令行参数文档:https://dbeaver.com/docs/dbeaver/Command-Line/
- MySQL Connector/J 配置属性:https://dev.mysql.com/doc/connector-j/en/connector-j-reference-configuration-properties.html
- 同专栏:《DBeaver 26.2.3 介绍与选型指南》《Ubuntu 22.04 安装 DBeaver 26.2.3 指南》《DBeaver 26.2.3 配置与 CLI 参数详解》