1

使用 psql,\dg\du告诉我每个用户(角色)所属的角色。我想以编程方式为单个用户确定这一点,但找不到用于生成返回结果的系统表\dg
我是否需要特殊权限才能执行此查询?

作为一个相关问题,我想确定角色可以更新哪些表。
我已经阅读了关于CREATE ROLEGRANT周围文档的文档,这些文档告诉我如何设置角色和权限,而不是如何测试角色成员资格或表访问权限。

4

1 回答 1

2

两者都有内置的系统信息功能。见pg_has_role等。

您还可以查询information_schema获取角色成员资格数据,特别information_schema.applicable_rolesinformation_schema.enabled_rolesinformation_schema.administrable_role_authorizations

最后,对于任何 psql命令,您都可以通过运行打印它运行的 sql的选项来\d了解究竟psql在做什么来获取信息。不过,当有内置函数或相同信息的视图时,我不建议使用's sql。的方法可能更快,但它也更特定于 PostgreSQL 版本,并且可能不适用于您正在运行的版本以外的 PostgreSQL 版本。在 和 的情况下,将作为与其他表连接的一部分进行查询。 改为使用视图更简单、更便携。psql-Epsqlinformation_schemapsql\du\dg psqlpg_catalog.pg_rolesinformation_schema

这确实应该是有关角色成员资格的文档条目;我将发布一个添加适当交叉引用的补丁。

于 2013-05-13T01:26:27.693 回答