DBeaver 不记录数据库用户登录历史,仅保存本地执行的SQL查询历史和日志;真正的登录记录需由数据库服务端(如MySQL general_log、PostgreSQL log_connections等)生成并查询。

DBeaver 本身不记录用户登录历史,它不采集或存储数据库用户的连接/登录事件(如 MySQL 的 mysql.general_log 或 PostgreSQL 的 pg_stat_activity 登录行)。 你看到的“查询历史”全是 DBeaver 自己在本地执行过的 SQL,不是数据库服务端产生的登录日志。
为什么查不到数据库用户的登录记录
DBeaver 是一个客户端工具,它的 Query History 和 Query Log 只跟踪自己发出的 SQL 请求,和数据库服务端的认证、会话建立过程完全无关。真正的登录历史必须由数据库自身生成并暴露:
- MySQL:需开启
general_log或查询performance_schema.threads(含PROCESSLIST快照),但默认关闭且不持久化 - PostgreSQL:依赖
log_connections = on配合日志归档,或实时查pg_stat_activity(只显示当前活跃会话) - Oracle:需启用审计(
AUDIT SESSION)或解析aud$表,非默认行为 - SQL Server:需开启 C2 审计或查询
sys.dm_exec_sessions(仅当前)
这些日志不在 DBeaver 管控范围内,DBeaver 无法“查看”它们——它连读取权限都没有。
你在 DBeaver 里能查到的“历史”到底是什么
你实际能访问的只有以下两类本地记录,都跟“谁什么时候登录了数据库”毫无关系:
-
Query History(快捷键Alt+Shift+H或菜单Window → Show View → Query History):仅保存你在该 DBeaver 实例中对**当前连接**执行过的所有 SQL 文本、时间、耗时、影响行数 -
Query Log(快捷键Alt+Shift+Q):更底层的执行上下文,含会话 ID、线程 ID、绑定参数,但仍是 DBeaver 主动发送的请求记录,不是服务端日志
二者数据均存于本地 SQLite 文件:[workspace]/.metadata/.plugins/org.jkiss.dbeaver.core/query_history.db,与数据库服务端零交互。
真要查数据库用户的登录历史,得换方式
如果你的目标是审计“张三昨天下午三点连过库没”,必须绕过 DBeaver,直连数据库执行服务端命令:
- MySQL(已开 general_log):
SELECT * FROM mysql.general_log WHERE argument LIKE '%connect%' AND event_time > '2026-11-02 15:00:00'; - PostgreSQL(已设 log_connections):查日志文件,或用
SELECT * FROM pg_stat_activity WHERE backend_start > '2026-11-02 15:00';(注意这只是当前存活会话) - 所有数据库通用临时方案:在 DBeaver 的 SQL 编辑器里手动运行上述语句——但前提是数据库已配置好对应日志功能,且你有权限查
别指望 DBeaver 提供一个“用户登录历史”面板,它压根没这个设计意图;混淆“客户端操作记录”和“服务端审计日志”是常见误解源头。
最易被忽略的一点:即使你开启了 DBeaver 的 Enable query history logging,它也只会记下 SELECT 1; 这种你敲的语句,而不会记录 Connected to MySQL 8.0.33 这类连接建立事件——那个动作根本没走 SQL 协议,DBeaver 底层用 JDBC DriverManager.getConnection() 完成,不产生可捕获的查询日志。











