CREATE USER
是一个用于创建数据库角色的 DDL 命令。
CREATE USER
添加于 PostgreSQL 6.3。从 PostgreSQL 8.1 开始,它成为 CREATE ROLE
的别名。
CREATE USER 和 CREATE ROLE
虽然 CREATE USER
从 PostgreSQL 8.1 开始基本上是 CREATE ROLE
的别名,但它们之间存在一个显著的行为差异:CREATE USER
创建的角色具有登录权限(LOGIN
选项)。但是,使用 CREATE ROLE
创建的角色默认不具有登录权限(NOLOGIN
选项)。
这保留了 PostgreSQL 8.1 之前 CREATE USER
的行为,同时使得可以使用 CREATE ROLE
安全地定义非登录角色。
请注意,createuser
核心实用程序的行为与 CREATE USER
相同,即使用它创建的角色默认具有登录权限。
更改历史
- PostgreSQL 14
CURRENT_ROLE
现在也可以代替用户名使用(提交 45b98057)
- PostgreSQL 10
UNENCRYPTED PASSWORD
选项已移除 (eb61136d)
- PostgreSQL 9.6
CREATEUSER
/NOCREATEUSER
选项已移除(提交 d371bebd)
- PostgreSQL 9.5
- PostgreSQL 9.1
REPLICATION
/NOREPLICATION
选项已添加(提交 9b8aff8c)
- PostgreSQL 8.1
- PostgreSQL 7.2
PASSWORD
选项可以指定为ENCRYPTED
或UNENCRYPTED
(提交 38bb1abc)
- PostgreSQL 7.0
SYSID
选项已添加(提交 eebfb9ba)
- PostgreSQL 6.3
- 已添加(提交 4c04f772)
示例
CREATE USER
的基本用法示例
postgres=# CREATE USER foo; CREATE ROLE
postgres=# \du List of roles Role name | Attributes | Member of -----------+------------------------------------------------------------+----------- foo | | {} postgres | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
请注意 CREATE USER
和 CREATE ROLE
之间的行为差异
postgres=# CREATE ROLE bar; CREATE ROLE
postgres=# \du List of roles Role name | Attributes | Member of -----------+------------------------------------------------------------+----------- bar | Cannot login | {} foo | | {} postgres | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
参考文献
- PostgreSQL 文档: CREATE USER