RDS postgres上的主用户无法向新用户授予模式权限

4
我在一个RDS实例中有大约5个测试用的PostgreSQL数据库。到目前为止,所有这些数据库都是使用实例创建时创建的Master_user运行和创建的。
现在,我正在尝试创建5个新用户,并为每个数据库分别授予全部权限。我尝试使用Pgadmin4的Grant向导,但我得到了任何授权选项的权限被拒绝的错误。 Grant ALL无法工作,Grant Create, Insert等也无法工作。可能是什么问题?

1
master_userrds_superuser 的成员吗? - Vao Tsun
是的。在PGadmin4中,进入master_user => 属性 => 成员资格 => 在角色中,我可以看到rds_superuser,并且我也可以勾选“选择包括WITH ADMIN OPTION的角色复选框”。然后我右键单击test_db1 => 授权向导 => 选择单个模式(或所有模式)=> 将Grantee选择为“test_user1” => 选择单个特权,如插入(或选择所有特权)=> 完成 => 出现“错误:模式*****的权限被拒绝”的提示。 - Amogh
我记得如果你是关系所有者,你绝对可以在关系上授予权限... - Vao Tsun
我在写上面的评论时尝试了一下。我也通过查询来执行此操作。无法授予所有或特定模式或表的授权。自创建以来,RDS实例上没有其他用户。只有单个用户,即主用户。 - Amogh
2
那我认为现在是时候向 AWS 技术支持提交请求了吗? - Vao Tsun
最终决定坐下来自己尝试。 - Vao Tsun
3个回答

3

假设我们已经作为rds_superuser连接到数据库,那么我们需要执行以下步骤:

  1. 授予关系所有权给rds_superuser(以便“成为”它)
  2. 成为所有者
  3. 授权

示例:

rds_superuser@rds_db> grant schema_owner to rds_superuser ;
GRANT ROLE
rds_superuser@rds_db> set role schema_owner;
SET
rds_superuser@rds_db> grant select on all tables in schema schema_name to new_user;
GRANT
rds_superuser@rds_db> reset role;
RESET

2

我最终使用--no-owner --no-acl备份了所有数据库,重命名了这些数据库,并创建了新的数据库和新的所有者。然后,我按照每个所有者的要求还原了每个备份,达到了我想要的效果。


1
解决方案是使用与实例一起创建的主数据库作为模板,以便主用户将拥有完全访问权限。我认为他们只是试图限制人们在同一RDS上创建多个数据库。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接