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

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

createuser

createuser — 定义一个新的PostgreSQL用户账户

大纲

createuser [option...] [username]

描述

createuser创建一个新的PostgreSQL用户。 只有超级用户(在pg_shadow表中usesuper被置位的用户)才能创建新的 PostgreSQL用户,因此调用createuser的用户必须能够以 PostgreSQL超级用户的身份连接。

成为超级用户也意味着能够绕过数据库内的访问权限检查,因此不应轻易授予超级用户身份。

createuser是SQL命令CREATE USER的包装器。通过此工具创建用户与通过其他访问服务器的方法创建用户,在效果上没有区别。

选项

createuser接受以下命令行参数:

username

指定要创建的PostgreSQL用户的名称。 该名称在此PostgreSQL安装的所有用户中必须唯一。

-a
--adduser

允许新用户创建其他用户。 (注意:实际上这会使新用户成为超级用户。 这个选项的命名并不恰当。)

-A
--no-adduser

不允许新用户创建其他用户(即新用户是普通用户,不是超级用户)。 这是默认设置。

-d
--createdb

允许新用户创建数据库。

-D
--no-createdb

不允许新用户创建数据库。 这是默认设置。

-e
--echo

回显createuser生成并发送给服务器的命令。

-E
--encrypted

加密存储在数据库中的用户密码。如果未指定, 则使用默认的密码行为。

-i number
--sysid number

允许为新用户选择一个非默认的用户 ID。这并非必需, 但有些人喜欢这样做。

-N
--unencrypted

不加密存储在数据库中的用户密码。如果未指定, 则使用默认的密码行为。

-P
--pwprompt

如果给出此选项,createuser会提示输入新用户的密码。 如果不打算使用密码认证,则不需要这样做。

-q
--quiet

不显示响应。

如果命令行上没有指定名称和其他缺少的信息,将会提示你输入。

createuser还接受以下用于连接参数的命令行参数:

-h host
--host host

指定服务器所在主机的主机名。如果该值以斜杠开头,则将其用作 Unix 域套接字所在目录。

-p port
--port port

指定服务器监听连接所用的 TCP 端口或本地 Unix 域套接字文件扩展名。

-U username
--username username

指定连接时使用的用户名(不是要创建的用户名)。

-W
--password

强制提示输入密码(用于连接服务器,而不是新用户的密码)。

环境

PGHOST
PGPORT
PGUSER

默认连接参数

诊断

若遇到困难,请参见CREATE USER和psql, 其中讨论了潜在问题和错误消息。数据库服务器必须在目标主机上运行。 此外,libpq前端库使用的任何默认连接设置和环境变量也都会生效。

示例

要在默认数据库服务器上创建用户 joe:

$ createuser joe
Shall the new user be allowed to create databases? (y/n) n
Shall the new user be allowed to create more new users? (y/n) n
CREATE USER

要使用主机 eden、端口 5000 上的服务器创建同一个用户 joe,避开提示并查看底层命令:

$ createuser -h eden -p 5000 -D -A -e joe
CREATE USER joe NOCREATEDB NOCREATEUSER;
CREATE USER

创建用户joe,允许他创建数据库并允许他创建其他用户,同时立即分配密码:

$ createuser -P -d -a -e joe
Enter password for new user: xyzzy
Enter it again: xyzzy
CREATE USER joe PASSWORD 'xyzzy' CREATEDB CREATEUSER;
CREATE USER

上面的示例中,输入密码时实际上不会回显新密码,但为清晰起见,我们显示了所输入的内容。不过,如示例所示,密码会出现在回显的命令中——因此,如果还有其他人能看到你的屏幕,在分配密码时就不要使用-e。

提交更正

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