Tom*_*lin 3 postgresql rds amazon-web-services
我刚刚在 aws 上创建了一个新的 postgres RDS 实例(通过仪表板),我给了它一个默认用户,让我们称他为“杰克”。
当我登录到实例时,我看到我创建的用户“jack”,并且他附加了一个角色“ rds_superuser ”。(所以我认为我可以做我以前在普通 postgres 服务器上用超级用户做的同样的事情)。
我检查了文档,我发现这是不可能的。
作为默认用户“stan”登录后,我创建了一个像“stan”这样的新数据库用户,并想创建一个所有者为用户“stan”的新数据库,我不能吗?
我输入了这样的东西:
CREATE DATABASE foobar WITH OWNER = stan;
Run Code Online (Sandbox Code Playgroud)
但是我遇到了一个错误,说的是:
错误:必须是角色“stan”的成员
所以,我所做的是,将角色设置为“stan”,以默认用户“jack”的身份注销,以“stan”的身份登录到 RDS 实例,并以他为所有者创建该数据库。
由于我有三个不同的用户,我不得不重复最后一步三遍。
我的问题是,有没有办法让我在 RDS postgres 创建期间创建的默认用户“jack”能够创建新数据库(如常规 postgres 服务器安装上的超级用户)并为不同的所有者提供这样的:
CREATE DATABASE foobar WITH OWNER = stan;
Run Code Online (Sandbox Code Playgroud)
Tnx,汤姆
你应该授予stantords_superuser为了做到这一点。你做到了:
rds=> create user stan;
CREATE ROLE
rds=> CREATE DATABASE foobar WITH OWNER = stan;
ERROR: must be member of role "stan"
Run Code Online (Sandbox Code Playgroud)
你应该:
rds=> grant stan to su_rdsadm;
GRANT ROLE
rds=> CREATE DATABASE foobar WITH OWNER = stan;
CREATE DATABASE
Run Code Online (Sandbox Code Playgroud)
我是作为 rds 超级用户完成的:
rds=> \du+ su_rdsadm
List of roles
Role name | Attributes | Member of | Description
-------------+-------------------------------+----------------------+-------------
su_rdsadm | Create role, Create DB +| {rds_superuser,stan} |
| Password valid until infinity | |
rds=> select current_user;
current_user
--------------
su_rdsadm
(1 row)
Run Code Online (Sandbox Code Playgroud)
很高兴进一步了解这一点。rds_superuser 对所有权/授予等的这种限制将一直困扰着您,直到您将要操作的对象(或您要授予的对象)的角色授予 rds 超级用户。