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 owner | CREATE 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 的属性。