CREATE USER
CREATE USER — 定义一个新的数据库用户账号
大纲
CREATE USERusername[ [ WITH ]option[ ... ] ] whereoptioncan be: SYSIDuid| [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'password' | CREATEDB | NOCREATEDB | CREATEUSER | NOCREATEUSER | IN GROUPgroupname[, ...] | VALID UNTIL 'abstime'
输入
username用户的名称。
uidSYSID子句可以用来选择正被创建的用户的 PostgreSQL 用户 ID。这些 ID 完全不必与 UNIX 用户 ID 相匹配,但有些人选择让这些数字保持一致。如果没有指定,将默认使用已分配的最大用户 ID 加一(最小为 100)。
password设置用户的口令。如果你不打算使用口令认证,可以省略这个选项,但该用户将无法连接到做了口令认证的服务器。口令可以稍后设置或更改,使用 ALTER USER 。
- ENCRYPTED
UNENCRYPTED 这些关键字控制口令在
pg_shadow中是否以加密形式存储。(如果两者都未指定,默认行为由PASSWORD_ENCRYPTION服务器参数决定。)如果给出的字符串已经是 MD5 加密格式,那么它会被原样存储,而不管指定的是 ENCRYPTED 还是 UNENCRYPTED。这允许在转储/恢复期间重新装载加密的口令。关于如何设置认证机制的细节,见管理员指南中关于客户端认证的一章。注意,较老的客户端可能不支持处理以加密形式存储的口令所需的 MD5 认证机制。
- CREATEDB
NOCREATEDB 这些子句定义用户创建数据库的能力。如果指定了 CREATEDB,将被定义的用户将被允许创建他自己的数据库。使用 NOCREATEDB 将拒绝用户创建数据库的能力。如果这个子句被省略,默认使用 NOCREATEDB。
- CREATEUSER
NOCREATEUSER 这些子句决定是否允许用户自己创建新用户。这个选项还会让该用户成为可以越过所有访问限制的超级用户。省略这个子句将把该用户的这个属性值设置为 NOCREATEUSER。
groupname把该用户作为新成员插入其中的组的名称。可以列出多个组名。
abstimeVALID UNTIL 子句设置一个绝对时间,超过该时间后用户的口令不再有效。如果省略这个子句,登录将永久有效。
输出
CREATE USER命令成功完成时返回的消息。
描述
CREATE USER 将向一个
PostgreSQL 实例添加一个新用户。关于管理用户和认证的信息,请参阅管理员指南。你必须是数据库超级用户才能使用这个命令。
使用 ALTER USER 更改用户的口令和权限,使用 DROP USER 删除一个用户。使用 ALTER GROUP 把用户添加到其他组中或从其他组中移除该用户。PostgreSQL 附带一个脚本createuser,它具有与这个命令相同的功能(事实上,它调用这个命令),但可以从命令 shell 运行。
用法
创建一个没有口令的用户:
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 语句。