创建超管账户

需求:我有一个运行 PostgreSQL 的Amazon Relational Database Service (Amazon RDS)Amazon Aurora数据库实例。我希望另一个用户具有与数据库实例主用户相同的权限。如何复制或克隆主用户?

解决方法:

运行 PostgreSQL 的数据库实例只能有一个主用户,该主用户是创建该实例时创建的。但是,也可以创建另一个与该主用户具有相同权限的用户。

重要提示:rds_superuser角色拥有的 RDS 数据库实例的最大权限。除非用户需要最大访问权限以访问 RDS 数据库实例,否则请勿将此权限分配给用户。

创建新用户 sys

使用 RDS 的根账号创建一个用于管理数据库和用户的管理员账号,他具有创建用户和创建 DB 的权限,通过运行 CREATE ROLE 命令创建新用户:

postgres=> CREATE ROLE sys WITH PASSWORD 'Test@0301' CREATEDB CREATEROLE LOGIN;

角色授权

向刚创建的角色 sys 授予 rds_superuser 权限:

postgres=> GRANT rds_superuser TO sys;
# 查看上面创建的Role
postgres=> \du
                                                               List of roles
    Role name    |                         Attributes                         |                          Member of                          
-----------------+------------------------------------------------------------+-------------------------------------------------------------
 postgres        | Create role, Create DB                                    +| {rds_superuser}
                 | Password valid until infinity                              | 
 sys             | Create role, Create DB                                     | {rds_superuser}

创建sys数据库

使用这个 sys 登陆 postgresql,创建用于存放数据的DB:

sys=> CREATE DATABASE sys WITH OWNER postgres ENCODING 'UTF8';
CREATE DATABASE
# 查看数据库
sys=> \l
                                    List of databases
   Name    |     Owner     | Encoding |   Collate   |    Ctype    |   Access privileges   
-----------+---------------+----------+-------------+-------------+-----------------------
 postgres  | postgres      | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
 sys       | rds_superuser | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 

postgresql基本操作

# 删除数据库
DROP DATABASE sys;
# 删除ROLE
DROP ROLE sys;
# 退出
\q

参考文档