CREATE USER

Name

CREATE USER  --  创建一个新的数据库用户帐户

Synopsis

CREATE USER username [ [ WITH ] option [ ... ] ]

这里 option 可以是∶

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

描述

CREATE USER 将向一个 PostgreSQL 实例增加一个新用户. 参考管理员手册获取关于管理用户和认证的信息。 要执行这条命令,你必须是一个数据库超级用户。

参数

username

用户名

uid

SYSID 子句可以用于选择正在被创建的用户的 PostgreSQL 用户标识。 这个用户标识不需要和 UNIX 系统用户标识匹配,但是有些人愿意让两者相同。

如果没有声明这个,缺省使用已分配的最高用户标识加一(最小是 100)。

password

设置用户的口令,如果你不准备使用口令认证, 那么你可以省略这个选项,否则该用户将不能联接到一个口令认证的服务器上。 此口令可以稍后再次设置或者修改,使用 ALTER USER

ENCRYPTED
UNENCRYPTED

ENCRYPTED/UNENCRYPTED 控制口令在数据库中是否以加密 形式存储在 pg_shadow 中. (如果两个都没有设置,那么缺省的特性是由 PASSWORD_ENCRYPTION 服务器参数决定的.) 如果提供的字串已经是 MD5 加密的格式,那么就照原样存储, 不管声明的是 ENCRYPTED 还是 UNENCRYPTED. 这样就允许在转储/恢复的过程中重载加密后的口令.

参阅 管理员手册中关于客户端认证的部分 获取关于如何设置认证机制的详细信息。 请注意老的客户端可能缺少 MD5 认证机制,我们需要这个认证机制 处理存储为密文的口令.

CREATEDB
NOCREATEDB

这个子句定义用户的创建数据库权限. 如果声明了CREATEDB, 被定义的用户将允许创建其自己的数据库. 而使用NOCREATEDB将否决该用户的创建数据库的能力. 如果忽略本子句,缺省是NOCREATEDB

CREATEUSER
NOCREATEUSER

该子句决定一个用户是否能创建一个新的用户. 这个选项同样把此用户变成数据库超级用户,可以跨越所有 访问限制。省略这个参数将置用户的这个属性为 NOCREATEUSER

groupname

一个组名称,把这个用户设为该组成员。 你可以列出多个组名字.

abstime

VALID UNTIL(有效期)子句设置一个绝对时间, 过了该时间后用户的口令将不再有效. 如果省略这个子句,登陆将总是有效的.

诊断

CREATE USER

如果命令成功完成,返回此信息.

注意

使用 ALTER USER 修改用户的口令和权限, DROP USER 删除一个用户。 使用 ALTER GROUP 从组中增加或删除用户。 PostgreSQL 里有一个脚本 createuser 与此命令相同的功能(实际上,它调用这条命令), 但是可以在命令行上运行。

例子

创建一个没有口令的用户:

CREATE USER jonathan

创建一个有口令的用户:

CREATE USER davide WITH PASSWORD 'jw8s0F4'

创建一个有口令的用户,其帐号在 2001 年底失效. 注意当 2002 年走过一秒后,该帐号将不再有效:

CREATE USER miriam WITH PASSWORD 'jw8s0F4' VALID UNTIL 'Jan 1 2002'

创建一个拥有创建数据库权限的用户:

CREATE USER manuel WITH PASSWORD 'jw8s0F4' CREATEDB

兼容性

CREATE USER 语句是 PostgreSQL 扩展. SQL 标准把用户的定义交给具体实现处理.

又见

ALTER USER, DROP USER, createuser