在 DBeaver 中查 PostgreSQL 所有用户需执行 SQL:SELECT rolname, rolsuper, rolcanlogin FROM pg_roles ORDER BY rolname;rolcanlogin=true 为可登录用户,权限不足时需用 postgres 或具备 pg_read_all_data 权限的账号连接。

怎么在 DBeaver 中查 PostgreSQL 的所有用户
DBeaver 本身不直接提供“用户管理面板”,它依赖数据库自身的系统表或视图来展示用户信息。PostgreSQL 中的用户(role)统一存放在 pg_roles 系统表里,只要当前连接用户有权限,就能查出来。
实操建议:
- 在 SQL 编辑器中执行:
SELECT rolname, rolsuper, rolcreatedb, rolcreaterole, rolcanlogin FROM pg_roles ORDER BY rolname;
-
rolcanlogin = true表示这是可登录用户(即传统意义上的“用户”),false则多为组角色(group role) - 如果提示
permission denied for table pg_roles,说明当前用户权限不足——需用postgres或具有pg_read_all_data/SELECT ON pg_authid权限的账号连接
MySQL 用户列表为什么查不到 root 或其他用户
MySQL 的用户信息存在 mysql.user 表中,但 DBeaver 默认不会自动展开该库下的系统表(尤其在较新版本中,mysql 库可能被隐藏)。
实操建议:
- 右键连接 → 编辑连接 → 进入 SQL Server 设置 → 勾选 Show system objects 和 Show system tables
- 刷新元数据(F5 或右键连接 → Refresh metadata)
- 再执行:
SELECT User, Host, authentication_string FROM mysql.user;
- 注意:MySQL 8.0+ 默认认证插件是
caching_sha2_password,旧客户端可能无法显示完整字段,authentication_string字段才是密码哈希值,Password字段已弃用
Oracle 怎么列出所有可登录用户(不是 schema)
Oracle 没有“用户=登录账号”的简单对应关系,ALL_USERS 只返回有 schema 的用户,而真正能登录的需满足 ACCOUNT_STATUS = 'OPEN' 且不是外部用户。
实操建议:
- 使用 DBA 权限连接后查:
SELECT username, account_status, created, profile FROM dba_users WHERE account_status = 'OPEN' AND authentication_type != 'EXTERNAL';
- 普通用户即使有
CREATE SESSION权限,也无法查DBA_USERS;可退而求其次查ALL_USERS,但它不反映登录状态 - DBeaver 的对象浏览器里默认只展开当前用户的 schema,要看到全部用户,必须用 DBA 账户连接,并确保连接配置中启用了 DBA mode(连接编辑 → Oracle 标签页 → 勾选 Use DBA views)
为什么 DBeaver 的“Users”节点一直为空或报错
这不是 DBeaver 故障,而是因为不同数据库对“用户”这个概念的抽象方式不同,DBeaver 的通用用户节点仅对部分数据库(如 SQL Server、DB2)做了原生支持,对 PostgreSQL/MySQL/Oracle 则基本不渲染该节点。
关键点:
- 别依赖左侧树形菜单里的 “Users” 文件夹——它常不可用或为空,尤其在非 SQL Server 环境下
- 不要双击试图展开它,容易触发
ERROR: relation "pg_user" does not exist(比如误连了 PostgreSQL 却期待 SQL Server 行为) - 真正可靠的路径永远是:确认连接权限 → 手动查系统表 → 复核字段含义(例如 PostgreSQL 的
pg_rolesvspg_user,后者只是视图,且只含rolcanlogin = true的行)
最常被忽略的是权限和连接模式:没开 DBA mode、没勾选系统对象、用普通账号硬查 DBA 视图——这三类问题占了用户查不到用户的 90%。先看报错信息里的表名和权限关键词,再回头调连接设置,比反复刷新界面更有效。











