在 postgres 中,您可以GRANT
或 REVOKE
权限,例如:
REVOKE ALL ON SCHEMA public FROM PUBLIC;
GRANT USAGE ON SCHEMA public TO <myuser>;
我的问题;如果每个数据库都有一个模式PUBLIC
,那么您是要撤销还是授予这个所有 数据库?如果是这样,如果您只想更改一个数据库的模式权限怎么办?
上下文:我想为一个数据库中的一个方案GRANT SELECT, INSERT, DELETE
给一个用户。我想在不连接到数据库的情况下执行此操作。或者是简单地通过处理对实际数据库的 CONNECT
权限来执行此操作的方法。因此,如果他们只能连接到一个数据库,那么您说“所有”PUBLIC 模式都没有关系吗?
最佳答案
这里有很多问题;我会尽力恢复秩序。
撤销
CREATE
是个好主意来自public
所有数据库中的模式。但您绝对必须依次连接到每个数据库才能做到这一点。
一个漂亮的解决方案可能是您在数据库
template1
上执行此操作.然后每个新数据库都会自动正确设置,因为CREATE DATABASE
复制模板数据库。要授予用户对所有数据库中的模式的权限,您必须再次依次连接到所有数据库。
REVOKE ALL
也是个好主意来自PUBLIC
的所有数据库并授予CONNECT
选择性特权。这一次,您可以在不连接到每个数据库的情况下执行此操作,因为数据库是共享对象 —
pg_database
目录可从每个数据库访问。
关于postgresql - 在 Postgres 中 GRANT/REVOKE 时限制模式的范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50377747/