背景
在我的 PostgreSQL 实例中(比如只有一个表构成的一个唯一数据库),我有 2 个用户:
user_A
, 谁可以创建和填充my_table
,user_B
, 谁应该只能从中读取 ( SELECT
) 。碰巧的是,由于我无法控制的 API,user_A
不断删除并my_table
从头开始重新创建。
这会导致 上的user_B
权限重置my_table
。
因此,我被迫
my_db=# GRANT SELECT on TABLE my_table TO user_B;
Run Code Online (Sandbox Code Playgroud)
每次user_A
重新创建my_table
.
注意:
我知道(参见。为在 postgresql 中创建的任何新表授予用户权限)只能为授予它们的用户创建的对象设置默认权限(即,user_B
为创建的表设置默认权限会更容易)by user_B
)——但这里的情况并非如此。
此外,如上面链接的问题所述,文档指定“您只能更改将由您自己或您所属的角色创建的对象的默认权限”。
所以我可以有
CREATE ROLE super_role;
GRANT super_role TO user_A;
GRANT super_role TO user_B;
Run Code Online (Sandbox Code Playgroud)
然后SET ROLE super_role
在user_A
创建表之前......但不幸的是我无法控制如何user_A
创建它。 …