【问题标题】:Granting rolegroup to role did not inherit the config from rolegroup in postgres将角色组授予角色没有从 postgres 中的角色组继承配置
【发布时间】:2021-09-08 02:03:00
【问题描述】:

我们有一个场景,一些用户需要超级用户权限,而其他数据库用户不需要它。所以我们创建了用户,然后创建了一个角色“SuperRole”,它有权创建角色db。

假设我默认使用 INHERIT 将用户“User1”映射到角色“User1”。创建“SuperRole”角色后,我已经跑了

GRANT superrole to user1;

之后如果我看到 \du 输出

postgres=# \du user1
                    List of roles
  Role name   |       Attributes       |  Member of
--------------+------------------------+--------------
 user1        | Create role, Create DB | {superrole}

根据文档https://www.postgresql.org/docs/11/role-membership.html,角色“成员”的权限也应该被继承。但是当我使用 user1 连接到 psql 时,我应该拥有 superrole 的权限也可以创建角色和数据库。但是,当我尝试创建数据库时,出现以下错误。

postgres=> create database test;
ERROR:  permission denied to create database

创建角色时也会出现类似的错误。应该怎么做才能使超级角色的权限集也可供 user1 使用。

【问题讨论】:

    标签: postgresql roles


    【解决方案1】:

    角色属性 LOGIN、SUPERUSER、CREATEDB 和 CREATEROLE 可以被认为是特殊权限,但它们永远不会像数据库对象的普通权限那样被继承。您实际上必须将 SET ROLE 设置为具有这些属性之一的特定角色才能使用该属性。

    参考:https://www.postgresql.org/docs/current/role-membership.html

    【讨论】:

    • 看起来我遗漏了另一半有答案的文档。谢谢。 :)
    猜你喜欢
    • 2021-04-07
    • 2021-09-23
    • 1970-01-01
    • 2020-04-03
    • 1970-01-01
    • 2019-05-16
    • 1970-01-01
    • 2021-04-15
    • 2018-10-11
    相关资源
    最近更新 更多