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 之前的默认行为.)
  • -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 34.14)。

Diagnostics

万一遇到困难,请参见CREATE ROLEpsql以获取有关潜在问题和错误消息的讨论。数据库服务器必须在目标主机上运行。同样,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 端之前已经加密。

See Also

dropuser, CREATE ROLE