你能用 postgres 从 pg_read_all_data 撤销模式吗?

can you revoke a schema from pg_read_all_data, with postgres?

我有一个用户,它应该只能读取数据库中的所有内容,但不能读取特定的模式。

每个帐户一直在添加新模式,因此我宁愿允许所有内容然后拒绝该特定模式,而不是在新模式进入时允许它们。

我想做这样的事情:

GRANT pg_read_all_data TO user;
REVOKE ALL ON SCHEMA xx FROM user;

如何实现?

您必须分别授予所有其他架构中所有对象的权限:

GRANT USAGE ON SCHEMA mayread1 TO somerole;
GRANT SELECT ON ALL TABLES IN SCHEMA mayread1 TO somerole;
GRANT SELECT ON ALL SEQUENCES IN SCHEMA mayread1 TO somerole;

对除您要拒绝访问的架构之外的所有架构重复上述操作。