On this page
createuser
createuser —定义一个新的 PostgreSQL 用户帐户
Synopsis
createuser
[ connection-option
...] [ option
...] [ username
]
Description
createuser 创建一个新的 PostgreSQL 用户(或更确切地说,一个角色)。只有超级用户和具有CREATEROLE
特权的用户才能创建新用户,因此必须由可以作为超级用户连接的人或具有CREATEROLE
特权的用户调用 createuser。
如果要创建新的超级用户,则必须以超级用户身份连接,而不仅仅是具有CREATEROLE
特权。成为超级用户意味着能够绕过数据库内的所有访问权限检查,因此不应轻易授予超级用户权限。
createuser 是 SQL 命令CREATE ROLE的包装。通过此 Util 和其他访问服务器的方法创建用户之间没有有效的区别。
Options
createuser 接受以下命令行参数:
username
- 指定要创建的 PostgreSQL 用户的名称。该名称必须不同于该 PostgreSQL 安装中的所有现有角色。
-c number
--connection-limit=number
- 设置新用户的最大连接数。默认设置为无限制。
-d
--createdb
- 新用户将被允许创建数据库。
-D
--no-createdb
- 不允许新用户创建数据库。这是默认值。
-e
--echo
- 回显 createuser 生成并发送到服务器的命令。
-E
--encrypted
- 该选项已过时,但仍为向后兼容而接受。
-g role
--role=role
- 指示将作为新成员立即添加到的角色。可以通过编写多个
-g
开关来指定要将此角色作为成员添加到的多个角色。
- 指示将作为新成员立即添加到的角色。可以通过编写多个
-i
--inherit
- 新角色将自动继承其所属角色的特权。这是默认值。
-I
--no-inherit
- 新角色将不会自动继承其成员角色的特权。
--interactive
- 如果在命令行上未指定用户名,则提示 Importing 用户名,并且还提示未在命令行上指定选项
-d
/-D
,-r
/-R
,-s
/-S
中的哪个。 (这是 PostgreSQL 9.1 之前的默认行为.)
- 如果在命令行上未指定用户名,则提示 Importing 用户名,并且还提示未在命令行上指定选项
-l
--login
- 新用户将被允许登录(即,该用户名可用作初始会话用户标识符)。这是默认值。
-L
--no-login
- 将不允许新用户登录。(没有登录特权的角色仍然可以用作 Management 数据库权限的一种方法.)
-P
--pwprompt
- 如果提供,createuser 将提示 Importing 新用户的密码。如果您不打算使用密码身份验证,则没有必要。
-r
--createrole
- 将允许新用户创建新角色(即,该用户将具有
CREATEROLE
特权)。
- 将允许新用户创建新角色(即,该用户将具有
-R
--no-createrole
- 不允许新用户创建新角色。这是默认值。
-s
--superuser
- 新用户将是超级用户。
-S
--no-superuser
- 新用户将不是超级用户。这是默认值。
-V
--version
- 打印 createuser 版本并退出。
--replication
- 新用户将拥有
REPLICATION
特权,有关CREATE ROLE的文档中对此进行了更详细的描述。
- 新用户将拥有
--no-replication
- 新用户将没有
REPLICATION
特权,有关CREATE ROLE的文档中对此进行了更详细的描述。
- 新用户将没有
-?
--help
- 显示有关 createuser 命令行参数的帮助,然后退出。
createuser 还接受以下命令行参数作为连接参数:
-h host
--host=host
- 指定运行服务器的计算机的主机名。如果该值以斜杠开头,则将其用作 Unix 域套接字的目录。
-p port
--port=port
- 指定服务器正在侦听连接的 TCP 端口或本地 Unix 域套接字文件 extensions。
-U username
--username=username
- 连接的用户名(不是要创建的用户名)。
-w
--no-password
- 切勿发出密码提示。如果服务器要求密码验证,而其他方式(例如
.pgpass
文件)无法使用密码,则连接尝试将失败。该选项在没有用户 Importing 密码的批处理作业和脚本中很有用。
- 切勿发出密码提示。如果服务器要求密码验证,而其他方式(例如
-W
--password
- 强制 createuser 提示 Importing 密码(用于连接到服务器,而不 Importing 新用户的密码)。
此选项从不是必需的,因为如果服务器要求密码验证,则 createuser 会自动提示 Importing 密码。但是,createuser 会浪费连接尝试,因为发现服务器需要密码。在某些情况下,值得 Importing-W
以避免额外的连接尝试。
Environment
PGHOST
PGPORT
PGUSER
- 默认连接参数
与大多数其他 PostgreSQLUtil 一样,该 Util 也使用 libpq 支持的环境变量(请参见Section 33.14)。
Diagnostics
万一遇到困难,请参见CREATE ROLE和psql以获取有关潜在问题和错误消息的讨论。数据库服务器必须在目标主机上运行。同样,libpq 前端库使用的任何默认连接设置和环境变量都将适用。
Examples
要在默认数据库服务器上创建用户joe
,请执行以下操作:
$ createuser joe
在提示一些其他属性的默认数据库服务器上创建用户joe
的方法:
$ createuser --interactive joe
Shall the new role be a superuser? (y/n) n
Shall the new role be allowed to create databases? (y/n) n
Shall the new role be allowed to create more new roles? (y/n) n
要使用主机eden
上端口 5000 上的服务器创建同一用户joe
,并显式指定了属性,请查看基础命令:
$ createuser -h eden -p 5000 -S -D -R -e joe
CREATE ROLE joe NOSUPERUSER NOCREATEDB NOCREATEROLE INHERIT LOGIN;
要将用户joe
创建为超级用户并立即分配密码,请执行以下操作:
$ createuser -P -s -e joe
Enter password for new role: xyzzy
Enter it again: xyzzy
CREATE ROLE joe PASSWORD 'md5b5f5ba1a423792b526f799ae4eb3d59e' SUPERUSER CREATEDB CREATEROLE INHERIT LOGIN;
在上面的示例中,键入新密码实际上并没有回显,但是为了清楚起见,我们显示了键入的密码。如您所见,密码在发送给 Client 端之前已经加密。