createuser

Name

createuser -- 创建一个新的PostgreSQL用户帐户

Synopsis

createuser [_connection-option_...] [_option_...] [_username_]

描述

createuser创建一个新的PostgreSQL 用户(更准确地说是一个角色)。 只有超级用户和具有CREATEROLE权限的用户可以创建新的用户。 因此createuser必须由超级用户或者是具有 CREATEROLE权限的用户执行。

如果你想创建一个新的超级用户,你必须以超级用户身份连接, 而不仅仅是一个有CREATEROLE权限的用户。 成为超级用户就意味着将在数据库里绕开所有访问权限检查,因此,不要轻易授予超级用户权限。

createuser是对 SQL命令CREATE ROLE的封装。 因此,用哪种方法创建的用户都一样。

选项

createuser接受下列命令行参数:

_username_

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

-c _number_``--connection-limit=``_number_

为新用户设置最大数目的连接限制。缺省为无限制。

-d --createdb

允许该新用户创建数据库。

-D --no-createdb

禁止该新用户创建数据库。这是缺省(设置)。

-e --echo

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

-E --encrypted

加密存储在数据库中的用户的密码。 如果没有指定,使用缺省设置。

-i --inherit

该新角色将自动继承其所属角色组的权限。这是缺省(设置)。

-I --no-inherit

该新角色将不会自动继承他所属角色组的权限。

--interactive

若没有在命令行上指定用户名,提示缺少用户名。并且 -d/-D, -r/-R, -s/-S选项任何属性没有在命令行指定,也会提示缺少属性(而不会使用缺省值)。 (PostgreSQL 9.1以前这是缺省的设置。)

-l --login

该新用户将允许登录(也就是说,用户名可以作为初始会话的用户标识符)。这是缺省(设置)。

-L --no-login

该新用户将不允许登录。 (作为管理数据库权限的手段,(设置)没有登录权限的角色仍然是有必要的。)

-N --unencrypted

不加密存储在数据库中的用户的密码。 如果没有指定,使用缺省设置

-P --pwprompt

如果给出(此选项),createuser将提示输入新用户的密码。 如果不准备使用密码认证方式,那么没必要这么做。

-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域套接字文件的扩展(描述符)。

-U _username_ --username=``_username_

进行联接的用户名(不是要创建的用户名)。

-w --no-password

永远不提示输入密码。 如果服务器要求密码验证和密码 (并且)通过其他方式如 .pgpass文件(验证)不可用, 则联接尝试将失败。 此选项在不需要用户输入密码的批处理作业和脚本中非常有用。

-W --password

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

这个选项不是必须的,如果服务器要求认证密码 createuser会自动提示需输入密码。 然而,createuser会浪费一个联接尝试判断出该服务器需要密码。 在某些情况下,这是值得键入-W以避免多余的联接尝试。

环境变量

PGHOST PGPORT PGUSER

缺省的联接参数

此实用工具,像大多其他的PostgreSQL实用工具, 还使用libpq支持的环境变量(见 Section 31.14)。

诊断

如果有问题,将会显示后端错误信息。参阅CREATE ROLEpsql获取可能的问题和错误消息的描述。 数据库服务端必须运行在目标主机。此外,前端库 libpq中的所有缺省连接设置和环境变量都将适用。

示例

在缺省数据库服务器上创建一个joe用户:

<samp class="literal">$</samp> <kbd class="literal">createuser joe</kbd>

To create a user joe on the default database server with prompting for some additional attributes:

<samp class="literal">$</samp> <kbd class="literal">createuser --interactive joe</kbd>
<samp class="literal">Shall the new role be a superuser? (y/n)</samp> <kbd class="literal">n</kbd>
<samp class="literal">Shall the new role be allowed to create databases? (y/n)</samp> <kbd class="literal">n</kbd>
<samp class="literal">Shall the new role be allowed to create more new roles? (y/n)</samp> <kbd class="literal">n</kbd>

在主机eden端口5000的服务端里创建(跟上例)一样joe用户, 明确指定属性,请看下列命令:

<samp class="literal">$</samp> <kbd class="literal">createuser -h eden -p 5000 -S -D -R -e joe</kbd>
<samp class="literal">CREATE ROLE joe NOSUPERUSER NOCREATEDB NOCREATEROLE INHERIT LOGIN;</samp>

创建超级用户joe,并立即指定一个密码:

<samp class="literal">$</samp> <kbd class="literal">createuser -P -s -e joe</kbd>
<samp class="literal">Enter password for new role:</samp> <kbd class="literal">xyzzy</kbd>
<samp class="literal">Enter it again:</samp> <kbd class="literal">xyzzy</kbd>
<samp class="literal">CREATE ROLE joe PASSWORD 'md5b5f5ba1a423792b526f799ae4eb3d59e' SUPERUSER CREATEDB CREATEROLE INHERIT LOGIN;</samp>

在上面例子中,虽然新密码在输入的时候实际上并不会回显出来,但是我们还是明确的把它显示出来了。 正如你看到的,密码是加密后发送到客户端。 如果使用选项--unencrypted密码将会回显出来 (也可能在服务器日志和其他地方), 所以在其他人能看到你的屏幕的时候不要使用-e选项。

另请参阅

dropuser, CREATE ROLE