假设,我在Postgres 9.6中有两个用户,分别名为user1
和user2
。我想在user2
创建的任何新表上授予user1
的权限,而无需为创建的表提供额外的显式授予命令。换句话说,我要使以下命令正常工作:
user2
的权限(我不知道这里应该有什么!)CREATE TABLE t1 (id int)
(在user1
下)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>
答案 0 :(得分:3)
您可以通过创建default privileges来做到这一点:
ALTER DEFAULT PRIVILEGES
FOR USER user1
GRANT ALL ON TABLES TO user2