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数据库客户端DBeaver2026/10/20

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.6Ubuntu 22.04,安装方式见《Ubuntu 22.04 安装 DBeaver 26.2.3 指南》
目标库 APostgreSQL 16.1510.89.61.4:5432业务库 appdb,演示账号 root / q1w2e3r4,测试表 staff(5 行种子数据)
目标库 BMySQL 8.0.4610.89.61.5:3306业务库 appdb,演示账号 root / q1w2e3r4,同名测试表 staff
驱动仓库Maven Central(repo.maven.apache.org)客户端直连首次连接时自动下载 JDBC 驱动

💡 说明:root/q1w2e3r4 为本文演示用的固定测试口令;连接参数中的 10.89.61.4/5/6 为内网实测地址,读者按自己环境的库地址与账号替换即可,操作流程完全一致。

二、前置条件

  1. DBeaver 26.2.3 已安装并可正常启动(安装与首次启动排障见《Ubuntu 22.04 安装 DBeaver 26.2.3 指南》);
  2. 客户机与目标库网络互通(3306/5432 端口可达);
  3. 客户机可访问 Maven Central(驱动自动下载需要;离线环境改为手动导 jar,见八、Q4);
  4. 目标库的账号具备建表/插数权限(本文演示直接用 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 图形向导方式(推荐)

  1. 菜单 Database → New Database Connection(或主界面「新建连接」图标),数据库类型选 PostgreSQL,Next;
  2. Main 标签页填写:Host 10.89.61.4、Port 5432、Database appdb、Username root、Password q1w2e3r4,勾选 Save password;
  3. 点击 Test Connection …:首次会弹出「Download driver files」确认框(提示下载 PostgreSQL 驱动文件),点击 Download,进度条完成后即返回连接成功提示;
  4. 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_passwordMySQL 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);要用图形向导建持久连接。

九、参考链接