You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Postgres如何查询全部schema(含隐藏schema)的所有者

PostgreSQL查询所有schema所有者的解决方案

问题根因

你之前使用的select * from information_schema.schemata s order by schema_name语句返回结果不全,是Postgres的权限控制机制导致的:information_schema下的视图遵循SQL标准的权限约定,只会返回当前登录用户拥有USAGE或CREATE权限的schema,没有权限的schema会被直接过滤,不会出现在结果集里。

可行解决方法

直接查询Postgres原生的系统目录表,这类表不受对象权限过滤约束,默认所有数据库用户都有只读权限,可以拿到全量schema信息。

执行以下SQL即可查询所有schema和对应的所有者:

SELECT
  n.nspname AS schema_name,
  u.usename AS schema_owner
FROM pg_catalog.pg_namespace n
JOIN pg_catalog.pg_user u
  ON n.nspowner = u.usesysid
ORDER BY n.nspname;

特殊情况说明

如果执行上述SQL仍返回不全的结果,说明当前登录用户的系统表访问权限被管理员回收,你需要切换为超级用户(默认是postgres用户)登录数据库,再执行上面的查询即可拿到全量数据。

内容的提问来源于stack exchange,提问作者Helmoet de Zwijger

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 12:06:04