↑↓ 选择↵ 打开⌫ 切换范围完整搜索

PG.CENTER 连接 PostgreSQL 文档、百科与生态知识。由 Pigsty 维护。

支持中的版本: 当前版本 (18) / 17 / 16 / 15 / 14
开发中的版本: 19 / 20devel
已结束支持的版本: 13 / 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3 / 7.2 / 7.1 / 7.0 / 6.5 / 6.4
历史版本。 PostgreSQL 8.0 已结束支持。 请参阅 当前版本手册.

CREATE USER

CREATE USER — 定义一个新的数据库用户帐号

大纲

CREATE USER name [ [ WITH ] option [ ... ] ]

where option can be:

      SYSID uid
    | CREATEDB | NOCREATEDB
    | CREATEUSER | NOCREATEUSER
    | IN GROUP groupname [, ...]
    | [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'password'
    | VALID UNTIL 'abstime'

描述

CREATE USER向一个 PostgreSQL数据库集簇中添加一个新用户。有关管理用户和认证的信息可参阅第 17 章和第 19 章。必须是一名数据库超级用户才能使用这条命令。

参数

name

新用户的名称。

uid

SYSID子句可用于为新用户选择 PostgreSQL用户 ID。通常没有必要这样做,但如果你需要重新创建某个孤儿对象的拥有者,它可能很有用。

如果未指定,默认将使用已分配的最大用户 ID 加一(最小值为 100)。

CREATEDB
NOCREATEDB

这些子句定义用户创建数据库的能力。如果指定CREATEDB,则允许正在定义的用户创建他自己的数据库。指定 NOCREATEDB会禁止用户创建数据库。如果未指定,默认值为NOCREATEDB。

CREATEUSER
NOCREATEUSER

这些子句决定是否允许用户自己创建新用户。CREATEUSER 还会把该用户变为超级用户,超级用户可以越过所有访问限制。如果未指定,默认值为NOCREATEUSER。

groupname

一个现有组的名称,新用户将作为新成员被加入该组。可以列出多个组名。

password

设置该用户的密码。如果你不打算使用密码认证,可以省略此选项,但这样一来,如果你日后决定改用密码认证,该用户将无法连接。密码也可以稍后使用ALTER USER来设置或更改。

ENCRYPTED
UNENCRYPTED

这些关键字控制密码是否以加密形式存储在系统目录中。(如果两者都未指定,默认行为由配置参数password_encryption决定。)如果给出的密码字符串已经是 MD5 加密格式,那么无论指定的是ENCRYPTED还是 UNENCRYPTED,它都会按原样以加密形式存储(因为系统无法解密指定的已加密密码字符串)。这样便可在转储/恢复期间重新装载已加密的密码。

注意,较老的客户端可能缺少对 MD5 认证机制的支持,而处理加密存储的密码需要这种机制。

abstime

VALID UNTIL子句设置一个绝对时间,在此之后该用户的密码将不再有效。如果省略此子句,密码将始终有效。

注解

使用ALTER USER来更改用户的属性,使用DROP USER来删除用户。使用ALTER GROUP把用户加入组或从组中移除用户。

PostgreSQL还包含一个程序createuser,它与 CREATE USER功能相同(实际上它调用的就是这条命令),但可以在命令 shell 中运行。

VALID UNTIL子句只为密码定义过期时间,而不是为用户帐号本身定义过期时间。特别是,使用非基于密码的认证方式登录时,不会强制执行该过期时间。

示例

创建一个没有密码的用户:

CREATE USER jonathan;

创建一个带密码的用户:

CREATE USER davide WITH PASSWORD 'jw8s0F4';

创建一个密码有效期到 2004 年底的用户。2005 年过去一秒之后,该密码就不再有效。

CREATE USER miriam WITH PASSWORD 'jw8s0F4' VALID UNTIL '2005-01-01';

创建一个允许用户创建数据库的帐号:

CREATE USER manuel WITH PASSWORD 'jw8s0F4' CREATEDB;

兼容性

CREATE USER语句是 PostgreSQL的一种扩展。SQL 标准将用户的定义留给具体实现决定。

报告文档问题

阅读 上游文档. 反馈更正前请先核对 当前版本手册.