DBeaver 不记录也不暴露客户端真实出口 IP,因其作为 JDBC 客户端仅拼接 URL 并发起 TCP 请求,源 IP 由操作系统和驱动底层处理;确认实际来源需查数据库服务端视图或日志,如 PostgreSQL 执行 SELECT inet_client_addr()。

DBeaver 本身不记录、也不暴露连接来源 IP(即客户端真实出口 IP)。它作为 JDBC 客户端,只负责把连接参数拼成 JDBC URL 并发起 TCP 请求;后续的网络层信息(如源 IP、路由路径)由操作系统和驱动底层处理,DBeaver 不采集、不显示、也不写入日志。
为什么看不到来源 IP?
这是 JDBC 协议和 DBeaver 架构决定的:
- DBeaver 是 Java 应用,所有数据库连接都走 JDBC 驱动(如
postgresql.jar或dmjdbcdriver18.jar),驱动内部使用Socket建连,但不会把本机出口 IP 暴露给上层 UI - 它没有内置网络抓包能力,也不调用
netstat或ss类命令去反查本地连接对端 - 连接成功后,你看到的“已连接”状态只来自 JDBC 驱动返回的会话对象,不含网络元数据
想确认当前连接实际从哪个 IP 发出,得看目标数据库侧
来源 IP 的权威记录在数据库服务端日志或系统视图里,不是 DBeaver 能提供的。实操方法取决于你连的是哪种库:
- PostgreSQL:连上后执行
SELECT inet_client_addr(), inet_client_hostname();,返回的就是 DBeaver 所在机器的真实出口 IP 和主机名 - MySQL:执行
SELECT host FROM information_schema.processlist WHERE id = CONNECTION_ID();,结果字段是客户端 IP(注意:若走代理或 NAT,可能显示中间节点 IP) - 达梦(DM):执行
SELECT CLIENT_IP FROM V$SESSION WHERE SID = (SELECT SID FROM V$MYSTAT WHERE ROWNUM = 1); - 如果数据库启用了审计日志(如 PostgreSQL 的
log_connections = on),日志里也会记下每次连接的host=xxx
容易被误认为“来源 IP”的几个地方
这些字段常被混淆,但都不是 DBeaver 主动记录的客户端出口 IP:
-
主机/IP字段填的是目标数据库地址(比如localhost或10.20.30.40),不是你本机 IP - SSH 隧道配置里的
主机/IP(如1.3.1.1)是跳板机地址,也不是最终来源 - DBeaver 日志(
~/.dbeaver4/.metadata/.log)只记错误堆栈和驱动加载过程,不记 socket 层源地址 - Windows 上用
netstat -ano | findstr :5432可查到 DBeaver 进程建立的连接,其中本地地址那一列才是你真实的出口 IP —— 但这需要手动查,且不是 DBeaver 提供的功能
真正要追溯连接来源,别在 DBeaver 界面里找,直接查数据库服务端的会话视图或日志。它不记录这个,不是缺陷,而是职责边界清晰——DBeaver 管连接逻辑,不管网络拓扑。










