PostgreSQL: Admin: Database Role

17th November 2020 at 12:29pm
To-do
21.2 中跟 configuration settings 相关的内容未读。21.3 开始的内容未读。

PG 有 user 和 group 的概念,但是它们都被包裹在 role 中。

Role Attributes

属性作用语句
login可登陆CREATE ROLE <name> LOGIN
CREATE USER <name>
CREATE USER 隐含了 LOGIN。
superuser不受权限控制CREATE ROLE <name> SUPERUSER
database creation可创建 DB;销毁 DB 需要由 DB ownerCREATE ROLE <name> CREATEDB
role creation可创建、修改、销毁除 superuser 外角色CREATE ROLE <name> CREATEROLE
initiating replication可初始化主从间同步;同时需要 LOGIN 属性CREATE ROLE <name> REPLICATION LOGIN
password可通过密码登陆CREATE ROLE <name> PASSWORD 'string'

psql\du 元命令可以看所有 login role 的 attributes:

postgres=> \du
                                      List of roles
    Role name    |                         Attributes                         | Member of 
-----------------+------------------------------------------------------------+-----------
 course          | Superuser                                                  | {}
 goodreads_clone | Superuser                                                  | {}
 onlyice         | Create DB                                                  | {}
 postgres        | Superuser, Create role, Create DB, Replication, Bypass RLS | {}

SELECT * FROM pg_roles; 可以看到所有 role 的属性。