我看到很多关于有人试图将 role_specation 授予某些other_role的问题,但收到GRANT
错误
ERROR: must have admin option on role
role_specification
所有的答案似乎都可以归结为“发生这种情况是因为原件 发行WITH ADMIN
时没有使用”。GRANT
role
TO
role_specification
...
所以现在我做不到 GRANT
role_specification
TO
other_role
但令我困惑的是,我找不到任何有关如何实际查看是否为角色设置了管理选项的信息。像使用 psql 列出数据库权限这样的答案揭示了角色的权限,但这些属性似乎都不对应于admin option
. Postgres 文档似乎对此也保持沉默。
那么...Postgres 在哪里跟踪这一点,以及如何查询它?
根据@Erwin Brandstetter 的回答,我有一些更深层次的问题......
- \drg 对我来说不可用。我想这是在比 13 更新的 Postgres 版本中?
- 这使得 SQL 非常有价值,但我不确定它是如何翻译的。我的结果是:
SELECT roleid::regrole, member::regrole, grantor::regrole, admin_option
FROM pg_auth_members where roleid::regrole::text like 'content%';;
roleid | member | grantor | admin_option
---------------+---------------+---------------+--------------
content_adm | int_web_admin | content_adm | f
content_rwd | randall | postgres | f
content_rwd | content_adm | postgres | f
所有s在 pg_auth_members 表的所有行中都roleid
具有as false (但明显不存在 roleid)。即使如此,content_adm 可以将 content_adm 授予 int_web_admin 角色,但不能将 content_rwd 授予它。admin_option
postgres
相关台词显示\du
:
Role name | Attributes | Member of
------------------+----------------+----------------------------------
content_adm | | {content_rwd}
content_rwd | Cannot login | {}
randall | | {content_rwd}
int_web_admin | | {sys_role,content_adm}
(我相信content_rwd的content_adm和randall成员资格是由以前的DBA设置的)
所以我的第二个后续问题是:如何将 SQL 查询结果转换为类似于 的信息\drg
?