使用 psql,\dg
并\du
告诉我每个用户(角色)所属的角色。我想以编程方式为单个用户确定这一点,但找不到用于生成返回结果的系统表\dg
。
我是否需要特殊权限才能执行此查询?
作为一个相关问题,我想确定角色可以更新哪些表。
我已经阅读了关于CREATE ROLE
和GRANT
周围文档的文档,这些文档告诉我如何设置角色和权限,而不是如何测试角色成员资格或表访问权限。
使用 psql,\dg
并\du
告诉我每个用户(角色)所属的角色。我想以编程方式为单个用户确定这一点,但找不到用于生成返回结果的系统表\dg
。
我是否需要特殊权限才能执行此查询?
作为一个相关问题,我想确定角色可以更新哪些表。
我已经阅读了关于CREATE ROLE
和GRANT
周围文档的文档,这些文档告诉我如何设置角色和权限,而不是如何测试角色成员资格或表访问权限。
两者都有内置的系统信息功能。见pg_has_role
等。
您还可以查询以information_schema
获取角色成员资格数据,特别information_schema.applicable_roles
是information_schema.enabled_roles
和information_schema.administrable_role_authorizations
。
最后,对于任何 psql命令,您都可以通过运行打印它运行的 sql的选项来\d
了解究竟psql
在做什么来获取信息。不过,当有内置函数或相同信息的视图时,我不建议使用's sql。的方法可能更快,但它也更特定于 PostgreSQL 版本,并且可能不适用于您正在运行的版本以外的 PostgreSQL 版本。在 和 的情况下,将作为与其他表连接的一部分进行查询。 改为使用视图更简单、更便携。psql
-E
psql
information_schema
psql
\du
\dg
psql
pg_catalog.pg_roles
information_schema
这确实应该是有关角色成员资格的文档条目;我将发布一个添加适当交叉引用的补丁。