创建超管账户
需求:我有一个运行 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