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 ROLE 和psql获取可能的问题和错误消息的描述。 数据库服务端必须运行在目标主机。此外,前端库 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
选项。