# 创建用户

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

# 概要

创建用户 [连接选项...][option...] [用户名]

# 描述

createuser 创建一个新的 PostgreSQL 用户(或者更准确地说,一个角色)。只有超级用户和具有创造者权限可以创建新用户,因此 createuser 必须由可以连接为超级用户或具有以下权限的用户调用创造者特权。

如果你想创建一个新的超级用户,你必须以超级用户的身份连接,而不仅仅是创造者特权。作为超级用户意味着能够绕过数据库内的所有访问权限检查,因此不应轻易授予超级用户访问权限。

createuser 是 SQL 命令的包装器创建角色.通过此实用程序创建用户和通过其他访问服务器的方法创建用户之间没有有效的区别。

# 选项

createuser 接受以下命令行参数:

用户名

指定要创建的 PostgreSQL 用户的名称。此名称必须不同于此 PostgreSQL 安装中的所有现有角色。

-c *数字*
--连接限制=*数字*

为新用户设置最大连接数。默认设置为无限制。

-d
--createdb

新用户将被允许创建数据库。

-D
--no-createdb

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

-e
- 回声

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

-E
--加密

此选项已过时,但仍被接受以实现向后兼容性。

-g *角色*
--角色=*角色*

指示此角色将作为新成员立即添加到的角色。可以通过编写多个来指定将添加此角色作为成员的多个角色-g开关。

-一世
- 继承

新角色将自动继承其所属角色的权限。这是默认设置。

-我
--没有继承权

新角色不会自动继承其所属角色的权限。

--互动的

如果在命令行中未指定用户名,则提示输入用户名,并提示输入其中任何一个选项-d/-D,-r/-R,-s/-S未在命令行上指定。(这是PostgreSQL 9.1之前的默认行为。)

-l
--登录

新用户将被允许登录(也就是说,用户名可以用作初始会话用户标识符)。这是默认设置。

-L
--没有登录

新用户将不被允许登录。(没有登录权限的角色作为管理数据库权限的手段仍然很有用。)

-P
--pwprompt

如果给定,createuser将提示输入新用户的密码。如果您不打算使用密码身份验证,则不需要这样做。

-r
--创建角色

新用户将被允许创建新角色(也就是说,该用户将拥有创建角色特权)。

-R
--没有角色

不允许新用户创建新角色。这是默认设置。

-s
--超级用户

新用户将成为超级用户。

-S
--没有超级用户

新用户将不是超级用户。这是默认设置。

-五
--版本

打印createuser版本并退出。

--复制

新用户将拥有复制特权,这在的文档中有更详细的描述创建角色.

--没有复制

新用户将没有复制特权,这在的文档中有更详细的描述创建角色.

-?
--救命

显示有关createuser命令行参数的帮助,然后退出。

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

-h*主办*
--主人=*主办*

指定运行服务器的计算机的主机名。如果该值以斜杠开头,它将用作Unix域套接字的目录。

-p*港口城市*
--港口=*港口城市*

指定服务器正在其上侦听连接的TCP端口或本地Unix域套接字文件扩展名。

-U*用户名*
--用户名=*用户名*

要连接为的用户名(不是要创建的用户名)。

-w
--没有密码

永远不要发出密码提示。如果服务器需要密码身份验证,而密码无法通过其他方式使用,例如.pgpass文件,连接尝试将失败。在没有用户输入密码的批处理作业和脚本中,此选项非常有用。

-W
--密码

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

此选项从来都不是必需的,因为如果服务器要求密码验证,createuser将自动提示输入密码。但是,createuser将浪费连接尝试,以发现服务器需要密码。在某些情况下,它值得输入-W以避免额外的连接尝试。

# 环境

PGHOST
PGPORT
PGUSER

默认连接参数

PG_颜色

指定是否在诊断消息中使用颜色。可能的值是总是, 汽车从不.

与大多数其他PostgreSQL实用程序一样,该实用程序也使用libpq支持的环境变量(请参阅第34.15节).

# 诊断学

如果遇到困难,请参阅创建角色psql用于讨论潜在问题和错误消息。数据库服务器必须在目标主机上运行。此外,libpq前端库使用的任何默认连接设置和环境变量都将适用。

# 例子

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

$ createuser 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

创建同一用户在主机上使用服务器伊甸园,端口5000,显式指定属性,查看底层命令:

$ createuser -h eden -p 5000 -S -D -R -e joe
CREATE ROLE joe NOSUPERUSER NOCREATEDB NOCREATEROLE INHERIT LOGIN;

创建用户作为超级用户,并立即分配密码:

$ 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;

在上面的例子中,新密码在输入时并没有得到响应,但为了清晰起见,我们展示了输入的内容。如您所见,密码在发送到客户端之前是经过加密的。

# 另见

dropuser, 创建角色