↑↓ 选择 ↵ 打开 ⌫ 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

百科 / 命令行工具 / 客户端程序

createuser

描述 createuser 创建一个新的 PostgreSQL 用户(更准确地说,是一个角色)。只有超级用户以及具有 CREATEROLE 权限的用户才能创建新用户,因此调用 createuser 的用户必须能够以超级用户或具有 CREATEROLE 权限的用户身份连接。 如果要创建一个具有 SUPERUSER 、 REPLICATION 或 BYPASSRLS 权限的角色,则必须以超级用户身份连接,而不能仅具有 CREATEROLE 权限。超级用户意味着能够绕过数据库中的所有访问权限检查,因…

当前查看 PostgreSQL 18。

中文定义与说明

命令行工具 createuser [ connection-option ...] [ option ...] [ username ]。

同版本中文手册节选

描述

createuser 创建一个新的 PostgreSQL 用户(更准确地说,是一个角色)。只有超级用户以及具有 CREATEROLE 权限的用户才能创建新用户,因此调用 createuser 的用户必须能够以超级用户或具有 CREATEROLE 权限的用户身份连接。

如果要创建一个具有 SUPERUSER、REPLICATION 或 BYPASSRLS 权限的角色,则必须以超级用户身份连接,而不能仅具有 CREATEROLE 权限。超级用户意味着能够绕过数据库中的所有访问权限检查,因此不应轻易授予超级用户权限。CREATEROLE 也赋予非常广泛的权限。

createuser 是 SQL 命令 CREATE ROLE 的一个包装器。通过此工具创建用户与通过其他访问服务器的方法创建用户,在效果上没有区别。

选项

createuser 接受下列命令行参数:

username

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

-a role
--with-admin=role

指定一个现有角色,使其自动作为带有 ADMIN OPTION 的成员加入新角色,从而有权将新角色的成员资格授予其他角色。可以通过写多个 -a 开关来指定多个现有角色。

-c number
--connection-limit=number

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

-d
--createdb

允许新用户创建数据库。

-D
--no-createdb

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

-e
--echo

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

-E
--encrypted

该选项已废弃,但为了向后兼容仍被接受。

-g role
--member-of=role
--role=role(已弃用)

指定新角色应自动成为指定现有角色的成员。可以通过写多个 -g 开关来指定多个现有角色。

-i
--inherit

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

-I
--no-inherit

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

--interactive

如果命令行中未指定用户名,则提示输入用户名;此外,还会提示输入命令行中未指定的 -d/-D、-r/-R、-s/-S 选项。(直到 PostgreSQL 9.1 为止,这都是默认行为。)

-l
--login

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

-L
--no-login

不允许新用户登录。(不具有登录权限的角色仍可用于管理数据库权限。)

-m role
--with-member=role

指定一个现有角色,使其自动作为成员加入新角色。可以通过写多个 -m 开关来指定多个现有角色。

-P
--pwprompt

如果给出此选项,createuser 会提示输入新用户的密码。如果不打算使用密码认证,则不需要这样做。

-r
--createrole

允许新用户创建、更改、删除其他角色,对其添加注释,以及更改其安全标签;也就是说,该用户将具有 CREATEROLE 权限。关于该权限赋予哪些能力的更多细节,见创建角色。

-R
--no-createrole

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

-s
--superuser

新用户将成为超级用户。

-S
--no-superuser

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

-v timestamp
--valid-until=timestamp

设置一个日期和时间,在此之后该角色的密码将不再有效。默认不设置密码过期日期。

-V
--version

打印 createuser 版本并退出。

--bypassrls

新用户将绕过每一条行级安全(RLS)策略。

--no-bypassrls

新用户将不会绕过行级安全(RLS)策略。这是默认设置。

--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 可以避免这次额外的连接尝试。

查看完整中文手册与上下文。

说明

描述 createuser 创建一个新的 PostgreSQL 用户(更准确地说,是一个角色)。只有超级用户以及具有 CREATEROLE 权限的用户才能创建新用户,因此调用 createuser 的用户必须能够以超级用户或具有 CREATEROLE 权限的用户身份连接。 如果要创建一个具有 SUPERUSER 、 REPLICATION 或 BYPASSRLS 权限的角色,则必须以超级用户身份连接,而不能仅具有 CREATEROLE 权限。超级用户意味着能够绕过数据库中的所有访问权限检查,因此不应轻易授予超级用户权限。 CREATEROLE 也赋予 非常广泛的权限 。 createuser 是 SQL 命令 CREATE ROLE 的一个包装器。通过此工具创建用户与通过其他访问服务器的方法创建用户,在效果上没有区别。 选项 createuser 接受下列命令行参数: username 指定要创建的 PostgreSQL 用户名。该名称必须不同于此 PostgreSQL 安装中的所有现有角色名称。 -a role --with-admin= role 指定一个现有角色,使其自动作为带有 ADMIN OPTION 的成员加入新角色,从而有权将新角色的成员资格授予其他角色。可以通过写多个 -a 开关来指定多个现有角色。 -c number --connection-limit= number 为新用户设置最大连接数。默认不设限制。 -d --createdb 允许新用户创建数据库。 -D --no-createdb 不允许新用户创建数据库。这是默认设置。 -e --echo 回显 createuser 生成并发送给服务器的命令。 -E --encrypted 该选项已废弃,但为了向后兼容仍被接受。 -g role --member-of= role --role= role (已弃用) 指定新角色应自动成为指定现有角色的成员。可以通过写多个 -g 开关来指定多个现有角色。 -i --inherit 新角色将自动继承其所属角色的权限。这是默认设置。 -I --no-inher

手册中的可执行程序
createuser
程序版本
18.6
参考清单
客户端程序
选项定义组
30

用法

createuser [ connection-option ...] [ option ...] [ username ]

手册中的选项

选项与参数说明
-a role --with-admin= role指定一个现有角色,使其自动作为带有 ADMIN OPTION 的成员加入新角色,从而有权将新角色的成员资格授予其他角色。可以通过写多个 -a 开关来指定多个现有角色。
-c number --connection-limit= number为新用户设置最大连接数。默认不设限制。
-d --createdb允许新用户创建数据库。
-D --no-createdb不允许新用户创建数据库。这是默认设置。
-e --echo回显 createuser 生成并发送给服务器的命令。
-E --encrypted该选项已废弃,但为了向后兼容仍被接受。
-g role --member-of= role --role= role (deprecated)指定新角色应自动成为指定现有角色的成员。可以通过写多个 -g 开关来指定多个现有角色。
-i --inherit新角色将自动继承其所属角色的权限。这是默认设置。
-I --no-inherit新角色将不会自动继承其所属角色的权限。
--interactive如果命令行未指定用户名,则提示输入;对于命令行中未指定的 -d/-D、-r/-R、-s/-S 选项,也会逐项提示。(直到 PostgreSQL 9.1,这都是默认行为。)
-l --login允许新用户登录(也就是说,该用户名可用作初始会话用户标识符)。这是默认设置。
-L --no-login不允许新用户登录。(不具有登录权限的角色仍可用于管理数据库权限。)
-m role --with-member= role指定一个现有角色,使其自动作为成员加入新角色。可以通过写多个 -m 开关来指定多个现有角色。
-P --pwprompt如果给出此选项, createuser 会提示输入新用户的密码。如果不打算使用密码认证,则不需要这样做。
-r --createrole允许新用户创建、更改、删除其他角色,对其添加注释,以及更改其安全标签;也就是说,该用户将具有 CREATEROLE 权限。关于该权限赋予哪些能力的更多细节,见 创建角色 。
-R --no-createrole不允许新用户创建新角色。这是默认设置。
-s --superuser新用户将成为超级用户。
-S --no-superuser新用户将不是超级用户。这是默认设置。
-v timestamp --valid-until= timestamp设置一个日期和时间,在此之后该角色的密码将不再有效。默认不设置密码过期日期。
-V --version打印 createuser 版本并退出。
--bypassrls新用户将绕过每一条行级安全(RLS)策略。
--no-bypassrls新用户将不会绕过行级安全(RLS)策略。这是默认设置。
--replication新用户将具有 REPLICATION 权限,关于该权限的更完整说明见 CREATE ROLE 。
--no-replication新用户将不具有 REPLICATION 权限,关于该权限的更完整说明见 CREATE ROLE 。这是默认设置。
-? --help显示有关 createuser 命令行参数的帮助并退出。
-h host --host= host指定服务器所在主机的主机名。如果该值以斜杠开头,则将其用作 Unix 域套接字所在目录。
-p port --port= port指定服务器监听连接所用的 TCP 端口或本地 Unix 域套接字文件扩展名。
-U username --username= username指定连接时使用的用户名(不是要创建的用户名)。
-w --no-password绝不提示输入密码。如果服务器要求密码认证,而密码又无法通过诸如 .pgpass 文件等其他方式获得,则连接尝试将失败。该选项可用于没有用户在场输入密码的批处理作业和脚本。
-W --password强制 createuser 提示输入密码(用于连接到服务器,而不是新用户的密码)。

环境变量

变量含义
PGHOST PGPORT PGUSER默认连接参数
PG_COLOR指定诊断消息是否使用颜色。可选值为 always 、 auto 和 never 。

文档与源码

来源构建
版本
18.6
构建
https://ftp.postgresql.org/pub/source/v18.6/postgresql-18.6.tar.bz2
来源指纹
ee8d1a3612338fd9adf250730cb640fcc5233b5491337cc00a316a44e3a0b9f8

版本比较

PostgreSQL 11 → 12: 属性变化。

以下差异保留原始字段名与英文源描述。

--- PostgreSQL 11
+++ PostgreSQL 12
@@ -3,6 +3,10 @@
     {
       "description": "Default connection parameters",
       "name": "PGHOST PGPORT PGUSER"
+    },
+    {
+      "description": "Specifies whether to use color in diagnostic messages. Possible values are always , auto and never .",
+      "name": "PG_COLOR"
     }
   ],
   "options": [

比较已记录的接口与属性,排除来源指纹和构建元数据。某个样本中没有记录,不能据此判断实际引入或移除的版本。

相关条目

导出 JSON · 返回命令行工具 · 收录范围为 PostgreSQL 10 至 20;最早采样版本不一定是实际引入版本。