@[toc]
一、引言
在上一篇文章中,我们成功地在CentOS 7.9上部署了openGauss数据库,并通过gsql命令行验证了其基本功能。命令行虽然直接高效,但在处理复杂SQL、进行数据分析和日常管理时,图形化界面(GUI)工具往往能提供更直观、更便捷的操作体验。本篇将使用通用且强大的数据库客户端------DBeaver(Community Edition)进行演示。
本文将承接上文,详细介绍如何安装和使用DBeaver来连接openGauss数据库,并通过实际操作,演示如何利用它进行数据库的可视化管理、复杂SQL查询及基础特性验证。无论您是数据库管理员(DBA)还是初级开发者,本文都将帮助您更高效地玩转openGauss。 
二、DBeaver 简介
DBeaver是一款跨平台的通用数据库客户端,支持包括PostgreSQL在内的众多数据库。openGauss兼容PostgreSQL生态,因此使用DBeaver的PostgreSQL驱动即可稳定连接与操作openGauss。DBeaver提供丰富的特性,适合日常开发与DBA管理。
主要功能
- 连接管理:集中管理多个连接,支持会话复用与独立会话。
- 对象浏览器:树状结构展示模式、表、视图、函数等对象。
- SQL编辑器:语法高亮、代码补全、格式化、结果集可视化与导出。
- 数据导入/导出:支持CSV、JSON等格式的数据导入与导出。
- 事务与会话控制:支持自动提交与手动事务,便于并发与隔离性实验。
三、安装与配置DBeaver
DBeaver是一款客户端工具,您需要在本地的Windows、macOS或Linux开发机上安装。本篇以"CentOS 7.9 + openGauss 极简版(simpleInstall)"为后端环境为例,演示从本地开发机远程连接到服务器。
3.1下载 DBeaver(社区版)
访问DBeaver官方下载页面下载适配您的操作系统的安装包 
3.2 安装 DBeaver
以Windows为例,双击下载的.exe文件,按照安装向导提示完成安装

安装界面中的组件含义如下(以社区版为例):
| 组件名称 | 功能说明 | 是否必选 |
|---|---|---|
| DBeaver Community | DBeaver 主程序(核心功能,包括数据库连接、SQL 编辑、数据管理等)。 | ✅ 必选 |
| Include Java | 安装 DBeaver 自带的 Java 运行环境(JRE)。 | ❗ 可选 |
| Reset Settings | 安装后将 DBeaver 配置重置为默认(如界面布局、连接配置等)。 | ❌ 不推荐 |
| Associate .SQL files | 将 .sql 文件与 DBeaver 关联,双击 SQL 文件默认用 DBeaver 打开。 |
❗ 可选 |
| Associate SQLite database files | 将 SQLite 数据库文件(.db)与 DBeaver 关联。 |
❗ 可选 |
3.3 环境要求与驱动说明
- DBeaver依赖
JRE 1.8+。Windows安装版自带JRE(在刚刚安装时选择组件),免安装版需自行安装JRE。 - openGauss可直接使用DBeaver内置的PostgreSQL驱动进行连接;如遇兼容问题,可按官方指南手动添加openGauss JDBC驱动(详见后文"可选方案")。
3.4 创建数据库连接
安装完成后,启动DBeaver。首次使用时,我们需要创建一个到openGauss服务器的连接:
-
点击顶部菜单
数据库 -> 新建数据库连接。
-
方案A(推荐):在数据库列表中选择
PostgreSQL驱动。
-
方案B(可选):若已按官方指南添加了 openGauss JDBC 驱动,则在列表中选择该自定义驱动。[0]
-
在弹出的连接配置窗口中,填写以下信息:
Host:您在华为云上部署的openGauss服务器的公网IP地址。Port:默认为5432。Database:例如postgres。Username:安装时创建的omm用户或其他用户。Password:对应的用户密码。
-
首次使用可能提示下载PostgreSQL驱动,点击确认。

-
点击"Test Connection"进行测试,成功后点击"Finish"保存配置。

连接成功后,您将在左侧的对象浏览器(Database Navigator)中看到数据库的完整结构。
3.5 远程连接前的必要准备(与极简版匹配)
极简版安装默认仅在本机监听,若从本地 DBeaver 远程连接,需要完成以下准备(在服务器的omm用户下执行):
- 调整监听地址(
postgresql.conf):
bash
vi /opt/opengauss/data/single_node/postgresql.conf
# 将 listen_addresses 改为允许远程(推荐为'*',或指定内网/公网IP)
listen_addresses = '*'

- 允许远程客户端访问(
pg_hba.conf):
bash
vi /opt/opengauss/data/single_node/pg_hba.conf
# 在文件末尾添加一行(按需收敛网段)
host all all 0.0.0.0/0 md5

- 重启数据库使配置生效:
bash
gs_ctl restart -D /opt/opengauss/data/single_node -Z single_node

- 检查端口监听(确保5432启动):
bash
ss -ltnp | grep 5432

- 云服务器安全组/防火墙:
- 在云控制台开放
TCP 5432入站规则到您的开发机IP段。 - 若之前在入门篇中关闭了
firewalld,通常无需额外开放系统防火墙,但仍需确认云安全组规则。
完成以上准备后,回到 DBeaver 测试连接即可。
3.6连接参数示例
若您按入门篇极简版安装并设置了示例密码Gauss@123456,可参考如下参数:
text
主机:<您的服务器公网IP>
端口:5432
数据库:postgres
用户:omm
密码:Gauss@123456
3.7使用 openGauss JDBC 驱动(可选方案)
当内置PostgreSQL驱动在您的openGauss版本上出现兼容性问题时,可按官方指南添加openGauss JDBC驱动:[0]
- 菜单
Database -> Driver Manager,点击"New"。 - 添加JDBC驱动文件(从openGauss官网获取JDBC驱动Jar)。
- 选择JDBC Driver类:
org.postgresql.Driver。 - 设置URL模板:
jdbc:postgresql://{host}:{port}/{database},并勾选"Embed"。[0] - 保存驱动后,在"新建连接"时选择该自定义驱动,按前述参数填写并测试连接。
- 如数据库仅能通过SSH访问,可在连接属性中配置
SSH Tunnel(Connection settings -> SSH)。

四、使用DBeaver进行数据库实战
现在,让我们通过几个实际场景,体验DBeaver带来的便捷。
4.1 可视化数据查询与编辑
在上一篇文章中,我们创建了一个test表。现在,我们可以在DBeaver中轻松地对它进行操作。
- 在对象浏览器中,依次展开连接 ->
Schemas -> public -> Tables,找到test表。 - 右键点击
test表,选择"View Data"。DBeaver会执行查询并在新的数据编辑器标签页中以表格形式展示数据。 - 您可以直接在结果表格中修改数据,然后点击工具栏上的"Save"按钮,DBeaver会自动生成对应的
UPDATE语句并执行。 - 同样,也可以通过工具栏按钮插入或删除行。

4.2 编写和执行复杂SQL
DBeaver的SQL编辑器是其核心功能之一。让我们来尝试一个稍复杂的查询。[0]
假设我们需要分析一个"订单"表(orders)和一个"用户"表(users),找出消费总额最高的前10位用户。
首先,我们创建并填充一些示例数据。
sql
-- 创建用户表
CREATE TABLE users (
user_id INT PRIMARY KEY,
user_name VARCHAR(50)
);
-- 创建订单表
CREATE TABLE orders (
order_id INT PRIMARY KEY,
user_id INT,
order_amount DECIMAL(10, 2),
order_date DATE
);
-- 插入示例数据
INSERT INTO users VALUES (1, 'Alice'), (2, 'Bob'), (3, 'Charlie');
INSERT INTO orders VALUES (101, 1, 150.00, '2023-10-01'), (102, 2, 200.50, '2023-10-02'), (103, 1, 75.25, '2023-10-03');



现在,我们可以在SQL编辑器中编写JOIN和GROUP BY查询。
sql
SELECT
u.user_name,
SUM(o.order_amount) AS total_spent
FROM
users u
JOIN
orders o ON u.user_id = o.user_id
GROUP BY
u.user_name
ORDER BY
total_spent DESC
LIMIT 10;
在编写过程中,你会体验到DBeaver的代码补全与格式化功能。按下Ctrl+Enter或点击编辑器工具栏的"Execute"按钮,查询结果会立即显示在下方的结果面板。也可按F3打开或切换到SQL编辑器。
4.3 验证基础特性:事务处理
数据库的事务特性(ACID)是保证数据一致性的基石。我们可以通过DBeaver来直观地验证openGauss的事务处理能力。
在DBeaver中关闭自动提交、并打开两个独立会话的SQL编辑器,模拟并发事务场景。
准备:在SQL编辑器工具栏取消勾选"Auto-commit",确保使用显式事务;并在同一连接上通过"Open New SQL Console"打开两个控制台,或复制连接以获得两个独立会话。
窗口1:
sql
-- 开始一个事务
START TRANSACTION;
-- 更新Alice的用户名
UPDATE users SET user_name = 'Alice_new' WHERE user_id = 1;
-- 在本事务中查询,可以看到修改后的结果
SELECT * FROM users WHERE user_id = 1;
窗口2:
在窗口1执行UPDATE后,但在执行COMMIT或ROLLBACK之前,在窗口2中执行查询。
sql
-- 在另一个会话中查询,由于事务未提交,看到的是旧数据
SELECT * FROM users WHERE user_id = 1;
您会发现,窗口2查询到的仍然是Alice,而不是Alice_new。这体现了事务的隔离性。
现在,回到窗口1,在编辑器工具栏点击"Commit"或执行:
sql
-- 提交事务
COMMIT;
再次在窗口2 中执行查询,您会看到用户名已经变成了Alice_new。若需回滚,可点击"Rollback"。
4.4 常见远程连接失败排查
- 确认数据库已启动:
bash
gs_ctl status -D /opt/opengauss/data/single_node
- 端口未监听:检查
postgresql.conf的listen_addresses是否为'*';重新启动后用ss -ltnp | grep 5432确认。 - 认证失败:检查
pg_hba.conf是否有匹配的host规则,认证方式为md5;密码是否正确。 - 外网不可达:检查云安全组入站规则是否开放
5432到您的本地IP范围。
4.5 常见客户端驱动问题排查(DBeaver)
- 报错
javax.xml.bind.DatatypeConverter类型转换错误:- 现象:执行连接或查询时抛出
javax.xml.bind相关异常。 - 解决:在添加JDBC驱动Jar时额外加入
jaxb-api包(例如javax.xml.bind:jaxb-api:2.2.2)。
- 现象:执行连接或查询时抛出
- 报错
No suitable driver found for jdbc:postgresql://...:- 现象:测试连接失败,提示未找到合适的驱动。
- 解决:在自定义驱动中不要勾选"Use legacy JDBC instantiation";确认已选择正确的Driver类与URL模板。
五、openGauss 安全性与优势补充(基于本次实战)
openGauss 在安全性上秉承"安全缺省(secure-by-default)"的设计理念,本次连接排查过程中触达的多项机制正体现了这种优势。以下结合实战现象,归纳其关键安全特性与使用建议。
- 安全默认策略(防止弱配置被远程利用)
- 初始用户远程登录禁止:当使用安装时的初始超级用户(如
omm)从远程登录时,服务器会直接拒绝,报错类似于FATAL: Forbid remote connection with initial user.。这能有效降低默认高权限账户被远程暴力尝试或泄露后的风险。建议在服务器本机使用初始用户进行运维,并为业务创建独立账户用于远程访问:
- 初始用户远程登录禁止:当使用安装时的初始超级用户(如

sql
```sql
-- 在服务器本机以初始用户登录后创建业务账户
CREATE USER dbuser WITH PASSWORD 'S@fePwd_2025';
-- 仅在确有需要时再授予更高权限
-- ALTER USER dbuser SYSADMIN;
```
-
远程 trust 认证禁止:远程连接命中
trust规则时会被明确拒绝,常见报错为FATAL: Forbid remote connection with trust method!。这迫使远程访问必须进行口令或更强认证,减少误用与错配带来的潜在风险。
-
细粒度访问控制(可按网段/IP 精准授权)
- 通过
pg_hba.conf对不同来源、用户、数据库设定认证方式,规则按"自上而下"匹配,靠前规则优先。推荐为远程访问使用sha256或至少md5,并按需收敛到具体 IP 段: # IPv4 与 IPv6 的远程访问示例(建议收敛网段) host all all 0.0.0.0/0 sha256 host all all ::0/0 sha256 # 仅允许某公网 IP 的更严格示例 host all all 218.12.13.160/32 sha256 - 远程
trust不应启用;本机访问可以保留local/127.0.0.1/::1的trust以便便捷运维。
- 通过
-
强口令与加密策略(与认证方式协同)
- 支持设置
password_encryption_type=2(SHA-256)。当切换加密策略后,需要为相关用户"重置密码",以新的策略生成密文;否则可能出现认证失败或握手异常(例如客户端报EOF Exception)。 - 与
pg_hba.conf规则保持一致:若采用sha256,远程规则也应为sha256,避免命中md5或其他不一致导致的失败。
- 支持设置
-
网络与 SSL 行为(避免握手错配)
listen_addresses='*'或指定监听 IP,确保对外服务可达;- 若服务器
ssl=off,客户端需使用sslmode=disable;若服务器启用 SSL,则在客户端改为sslmode=require并正确配置证书。以 DBeaver 为例,也可在 JDBC URL 里直接带参数: jdbc:opengauss://:5432/?sslmode=disable&preferQueryMode=simple
-
可观测性与热加载(降低维护成本)
- 日志会明确记录拒绝原因,如
no pg_hba.conf entry、password authentication failed、Forbid remote connection with initial user等,便于快速定位; - 通过
gs_ctl reload可在不重启的情况下加载pg_hba.conf/postgresql.conf的部分变更,提升运维效率。
- 日志会明确记录拒绝原因,如
-
生态兼容优势(客户端与驱动)
- 兼容 PostgreSQL 生态,DBeaver 等主流客户端可稳定使用;
- 使用 openGauss JDBC 驱动或内置 PostgreSQL 驱动,配合属性如
preferQueryMode=simple、BCmptMode=true,可在多版本场景下获得更好的兼容体验。
小结:openGauss 的安全默认策略与可配置认证机制,使其在对外服务时具备更高的安全基线,同时保留足够的灵活性供运维人员按需收敛授权范围与加密策略。这些特性在企业生产环境中能有效降低误配置风险并提升合规性。
六、总结与展望
通过本文的介绍,您应该已经掌握了如何使用DBeaver来高效地管理和开发openGauss数据库。DBeaver将繁琐的命令行操作简化为直观的图形化点击,无论是数据查询、SQL开发还是特性验证,都变得更加轻松。
然而,对于应用开发者而言,更关心的是如何在代码中与数据库进行交互。在下一篇,也是本系列的最后一篇文章中,我们将以Python语言为例,深入探讨如何通过编程方式连接openGauss,并结合"用户管理系统"和"订单支付流程"等具体业务场景,编写包含CRUD(增删改查)和事务处理的完整代码示例,敬请期待!