↑↓ 选择 ↵ 打开 ⌫ 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

受支持版本: 当前版本 (18) / 17 / 16 / 15 / 14
测试与开发版本: 19 / devel
不受支持的版本: 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 6.5 已于 2004 年 6 月结束社区维护,本页译文保留供仍在使用旧版本的读者参考。新系统请看当前版本。

CREATE USER

CREATE USER — 为一个新用户创建账号信息

大纲

CREATE USER username
    [ WITH PASSWORD password ]
    [ CREATEDB   | NOCREATEDB ]
    [ CREATEUSER | NOCREATEUSER ]
    [ IN GROUP     groupname [, ...] ]
    [ VALID UNTIL  'abstime' ]
  

输入

username

用户的名称。

password

WITH PASSWORD 子句在 "pg_shadow" 表中设置用户的口令。由于这个原因, "pg_shadow" 不再可被 该 Postgres 实例访问, Postgres 用户的口令被初始设置为 NULL。

当 "pg_shadow" 表中某个用户的口令为 NULL 时,用户认证按历史上的方式进行(HBA、 PG_PASSWORD 等)。但是,如果为某个用户 设置了口令,一个新的认证系统会取代为该 Postgres 实例配置的任何其他认证系统,而存储在 "pg_shadow" 表中的口令 将被用于认证。 关于这个认证系统如何工作的更多细节见 pg_crypt(3)。如果省略 WITH PASSWORD 子句,用户的口令将被设置为空 字符串,它等同于上面提到的认证系统中的 NULL 值。

CREATEDB
NOCREATEDB

这些子句定义用户创建数据库的能力。 如果指定了 CREATEDB,将被定义的用户将 被允许创建他自己的数据库。使用 NOCREATEDB 将拒绝用户创建数据库的能力。如果这个 子句被省略,默认使用 NOCREATEDB。

CREATEUSER
NOCREATEUSER

这些子句决定是否允许用户在一个 Postgres 实例中创建新 用户。 省略这个子句将把该用户的这个 属性值设置为 NOCREATEUSER。

groupname

把该用户作为新成员插入其中的组的名称。

abstime

VALID UNTIL 子句设置一个绝对时间,超过该时间后 用户的 Postgres 登录不再有效。请注意, 如果某个用户在 "pg_shadow" 表中没有定义口令,在用户认证期间 不会检查有效截止日期。如果省略这个子句, 该属性在 "pg_shadow" 中存储为 NULL 值, 登录将永久有效。

输出

CREATE USER

命令成功完成时返回的消息。

描述

CREATE USER 将向一个 Postgres 实例添加一个新用户。

新用户将被赋予如下 usesysid:

SELECT MAX(usesysid) + 1 FROM pg_shadow;
   

这意味着 Postgres 用户的 usesysid 不会 与他们的操作系统 (OS)用户 ID 对应。这条规则的例外是 postgres 超级用户,在 initdb 过程中 它的 OS 用户 ID 被用作 usesysid。 如果你仍想让任意给定用户的 OS 用户 ID 与 usesysid 匹配, 可以使用 Postgres 发行版附带的 createuser 脚本。

注意

CREATE USER 语句是一种 Postgres 语言扩展。

使用 DROP USER 或 ALTER USER 语句删除或修改用户账号。

进一步的信息请参阅 pg_shadow 表。

   Table    = pg_shadow
   +--------------------------+--------------------------+-------+
   |          Field           |          Type            | Length|
   +--------------------------+--------------------------+-------+
   | usename                  | name                     |    32 |
   | usesysid                 | int4                     |     4 |
   | usecreatedb              | bool                     |     1 |
   | usetrace                 | bool                     |     1 |
   | usesuper                 | bool                     |     1 |
   | usecatupd                | bool                     |     1 |
   | passwd                   | text                     |   var |
   | valuntil                 | abstime                  |     4 |
   +--------------------------+--------------------------+-------+
   

用法

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

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
   

兼容性

SQL92

SQL92 中没有 CREATE USER 语句。

提交更正

译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。