我想向 Postgres 专家询问我在文档中发现的一个令人困惑的句子。特别是,我指的是 GRANT 命令,其中 documentation 声明:
<块引用>如果执行 GRANT 的角色通过多个角色成员资格路径间接持有所需的权限,则未指定哪个包含角色将被记录为已完成授权。在这种情况下,最佳做法是使用 SET ROLE 成为您想要执行 GRANT 的特定角色。
如果我理解正确,这与角色继承有关。特别是,你可能有一个角色 C,它继承了角色 A 和角色 B 的权限。在这种情况下,如果用户具有角色 C 并授予权限,那么 Postgres 可能会不确定地规定该权限是由任何一个授予的A 或 B。为避免这种歧义,用户可以发出 SET ROLE A 或 SET ROLE B 以强制较小的角色并阐明应如何授予。
关于这个的一些问题和一个更一般的问题:
提前致谢。