【问题标题】:Limiting the scope of schemas when GRANT/REVOKE'ing in Postgres在 Postgres 中 GRANT/REVOKE'ing 时限制模式的范围
【发布时间】:2018-10-26 21:55:18
【问题描述】:

在 postgres 中,您可以使用 GRANTREVOKE 权限,例如:

REVOKE ALL ON SCHEMA public FROM PUBLIC;
GRANT USAGE ON SCHEMA public TO <myuser>;

我的问题;如果每个数据库都有一个架构PUBLIC,那么您是撤销还是授予此所有个数据库?如果是这样,如果您只想更改一个数据库的架构权限怎么办?

上下文:我想GRANT SELECT, INSERT, DELETE 给一个用户,仅用于一个数据库中的一个方案。我想在不连接到数据库的情况下执行此操作。或者是通过同时处理CONNECT 对实际数据库的权限来做到这一点的方法。因此,如果它们只能连接到一个数据库,那么您是否说“所有”公共模式都没关系?

【问题讨论】:

    标签: postgresql schema


    【解决方案1】:

    这里有很多问题;我会尝试恢复秩序。

    1. 最好从所有数据库中的public 架构中撤销CREATE

      但是您绝对必须依次连接到每个数据库才能做到这一点。

      一个漂亮的解决方案可能是您在数据库template1 上执行此操作。然后每个新数据库都会自动正确设置,因为CREATE DATABASE 复制了模板数据库。

    2. 要授予用户对所有数据库中某个架构的权限,您必须再次依次连接到所有数据库。

    3. PUBLIC 的所有数据库上REVOKE ALL 并选择性地授予CONNECT 权限也是一个好主意。

      这一次,您可以在不连接到每个数据库的情况下执行此操作,因为数据库是共享对象——每个数据库都可以访问 pg_database 目录。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-21
      • 1970-01-01
      • 2013-02-26
      • 1970-01-01
      • 2011-04-23
      • 1970-01-01
      相关资源
      最近更新 更多