CREATE ROLE 是用于创建数据库角色的 DDL 命令。
CREATE ROLE 于 PostgreSQL 8.1 中引入,取代了原有的 CREATE USER 和 CREATE GROUP 命令(这两个命令被保留为 CREATE ROLE 的别名)。
变更历史
- PostgreSQL 18
- 默认情况下,如果使用 MD5 加密的密码创建角色,将发出
WARNING警告(提交 db6a4a98)
- 默认情况下,如果使用 MD5 加密的密码创建角色,将发出
- PostgreSQL 10
- 移除了
UNENCRYPTED PASSWORD选项(提交 eb61136d)
- 移除了
- PostgreSQL 9.6
- 移除了
CREATEUSER/NOCREATEUSER选项(提交 d371bebd)
- 移除了
- PostgreSQL 9.5
- 添加了
BYPASSRLS/NOBYPASSRLS选项(提交 491c029d)
- 添加了
- PostgreSQL 9.1
- 添加了
REPLICATION/NOREPLICATION选项(提交 9b8aff8c)
- 添加了
- PostgreSQL 8.1
- 添加(提交 7762619e)
示例
CREATE ROLE 的最小使用示例
postgres=# CREATE ROLE foo; CREATE ROLE
默认情况下,此角色无法登录
postgres=# \du foo
List of roles
Role name | Attributes | Member of
-----------+--------------+-----------
foo | Cannot login | {}
要创建登录角色,请执行,例如:
postgres=# CREATE ROLE bar LOGIN;
CREATE ROLE
postgres=# \du bar
List of roles
Role name | Attributes | Member of
-----------+------------+-----------
bar | | {}
这等同于执行 CREATE USER bar。
无法创建名为 "none" 的角色
postgres=# CREATE ROLE none; ERROR: role name "none" is reserved LINE 1: CREATE ROLE none;
参考资料
- PostgreSQL 文档: CREATE ROLE
