首页 > 解决方案 > 如何授予用户对 Postgres 中所有新表的权限?

问题描述

假设,我在 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过高权限(例如,它可能是) 。postgresuser2

标签: postgresqlpermissions

解决方案


您可以通过创建默认权限来做到这一点:

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

推荐阅读