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

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.4 已于 2003 年 10 月结束社区维护,本页译文保留供仍在使用旧版本的读者参考。新系统请看当前版本。

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

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

→ ERROR: removeUser: user "username" does not exist

如果没有找到 "username"。

描述

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 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。