Redrock Postgres 搜索 英文
版本: 9.3 / 9.4 / 9.5 / 9.6 / 10 / 11 / 12 / 13 / 14 / 15 / 16

createuser

名称

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

大纲

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

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

-g role
--role=role

表名该角色将立即作为新成员添加。可以通过写多个-g 选项添加多个这样的角色作为成员。

-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支持的环境变量(见 第 31.14 节)。

诊断

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

示例

在缺省数据库服务器上创建一个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;

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

又见

dropuser, CREATE ROLE