如何在Postgres中对所有新表授予用户权限?

时间:2018-07-04 09:07:39

标签: postgresql permissions

假设,我在Postgres 9.6中有两个用户,分别名为user1user2。我想在user2创建的任何新表上授予user1的权限,而无需为创建的表提供额外的显式授予命令。换句话说,我要使以下命令正常工作:

  1. 授予user2的权限(我不知道这里应该有什么!
  2. CREATE TABLE t1 (id int)(在user1下)
  3. INSERT INTO t1 VALUES (5)(在user2下)

请注意,在第2步和第3步之间,我不应该设置任何权限。

在第3步中,我总是出现错误:

permission denied for relation t1

我尝试过:

GRANT ALL PRIVILEGES ON DATABASE test TO user2;

GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO user2;

没有成功。

我也尝试过:

GRANT user1 TO user2

它帮助了。但是我不能将其视为解决方案,因为user1可能具有我不想与postgres共享的太高的权限(例如,可能是user2)。 / p>

1 个答案:

答案 0 :(得分:3)

您可以通过创建default privileges来做到这一点:

ALTER DEFAULT PRIVILEGES
FOR USER user1
GRANT ALL ON TABLES TO user2