【问题标题】:How to grant permissions to user for current schemas and schemas created in the future?如何为用户授予当前模式和未来创建的模式的权限?
【发布时间】:2020-03-14 07:40:36
【问题描述】:

我有一个 Postgres 数据库和一个我想授予权限的只读用户。我目前有两个模式,但希望将来会做更多。如何向我的只读用户授予选择权限,以便他们可以从当前创建的表以及将来在新架构中创建的表中读取数据?

我不想在创建每个新架构时显式授予它们的权限。

【问题讨论】:

    标签: postgresql permissions


    【解决方案1】:

    使用ALTER DEFAULT PRIVILEGES 而不指定任何架构:

    可以全局设置权限(即,针对当前数据库中创建的所有对象)[…] 如果省略IN SCHEMA,则更改全局默认权限。

    所以应该这样做:

    ALTER DEFAULT PRIVILEGES FOR whoever_will_create_the_tables
      GRANT SELECT ON TABLES TO the_readonly_user;
    ALTER DEFAULT PRIVILEGES FOR whoever_will_create_the_schemas
      GRANT USAGE ON SCHEMAS TO the_readonly_user;
    

    Granting已经创建的表的权限需要单独声明:

    GRANT SELECT ON ALL TABLES IN SCHEMA schema_1, schema_2 TO the_readonly_user;
    

    【讨论】:

    • 即使在这样做之后我仍然收到错误:ERROR: permission denied for schema
    • 啊,我想这在架构上也需要一个GRANT USAGE
    • 经过一番研究,似乎没有架构的默认权限。
    • @cdc1996 自 Postgres 10 起支持模式的默认权限,但之前不支持。
    猜你喜欢
    • 2020-04-26
    • 1970-01-01
    • 2015-10-16
    • 1970-01-01
    • 1970-01-01
    • 2021-02-10
    • 1970-01-01
    • 2013-10-01
    • 2011-10-11
    相关资源
    最近更新 更多