为Postgres中所有当前定义的角色设置默认ACL

时间:2017-10-10 12:31:54

标签: postgresql

我想在PostgreSQL中为所有角色设置默认ACL(即不使用PUBLIC)并且想要避免枚举。

有一种简单的方法吗?

1 个答案:

答案 0 :(得分:1)

您可以通过以下方式执行此操作:

为随后在架构myschema中创建的所有表(和视图)的每个人授予SELECT权限:

ALTER DEFAULT PRIVILEGES IN SCHEMA myschema GRANT SELECT ON TABLES TO PUBLIC;

并允许角色webuser也插入它们:

ALTER DEFAULT PRIVILEGES IN SCHEMA myschema GRANT INSERT ON TABLES TO webuser;

并撤消上述内容:

ALTER DEFAULT PRIVILEGES IN SCHEMA myschema REVOKE SELECT ON TABLES FROM PUBLIC;
ALTER DEFAULT PRIVILEGES IN SCHEMA myschema REVOKE INSERT ON TABLES FROM webuser;

Source

那就是:)