postgresql - 在 Postgres 中 GRANT/REVOKE 时限制模式的范围

标签 postgresql schema

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

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

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

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

最佳答案

这里有很多问题;我会尽力恢复秩序。

  1. 撤销CREATE是个好主意来自 public所有数据库中的模式。

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

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

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

  3. REVOKE ALL也是个好主意来自 PUBLIC 的所有数据库并授予 CONNECT选择性特权。

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

关于postgresql - 在 Postgres 中 GRANT/REVOKE 时限制模式的范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50377747/

相关文章:

node.js - 是否可以禁用 Mongoose SchemaTypes 的自动类型转换?

xml - 表示数据库模式的标准文件格式

postgresql - 从 Postgres 备份数据库

postgresql - postgres pg_try_advisory_lock 和限制问题

xml - 无法将名称 X 解析为递归 xml 架构中的元素声明组件

java - 从 Java 创建数据库/执行一堆 mysql 语句

postgresql - 将数组插入postgresql错误

macos - 如何将 SQL 查询作为包含双引号的参数传递给 psql

ruby-on-rails - 如何使用 Ruby on Rails 中的映射表跟踪模型历史?

schema - XSD:如何重新定义 simpleType 的数据类型,例如。从 xs:string 到 xs:integer