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

createuser

createuser — 定义新的 PostgreSQL 用户帐户

摘要

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

说明

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

如果您希望使用 SUPERUSERREPLICATIONBYPASSRLS 权限创建角色,则必须以超级用户身份连接,而不仅仅是使用 CREATEROLE 权限。成为超级用户意味着能够绕过数据库中的所有访问权限检查,因此不能轻易授予超级用户访问权限。 CREATEROLE 还传达了 非常广泛的权限

createuserSQL命令 CREATE ROLE 的一个包装器。通过此实用程序创建用户与通过其他方法访问服务器创建用户没有实际差别。

选项

createuser 接受以下命令行参数

用户名

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

-a role
--with-admin=role

指定一个现有角色,该角色将自动添加为新角色的成员并具有管理选项,从而有权将新角色的成员资格授予他人。通过编写多个 -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 以避免额外的连接尝试。

环境

PGHOST
PGPORT
PGUSER

默认连接参数

PG_COLOR

指定是否在诊断信息中使用颜色。可能的值包括 alwaysautonever

该实用程序与大多数其他 PostgreSQL 实用程序一样,也使用 libpq 所支持的环境变量(参见 第 32.15 节)。

诊断

如遇困难,请参阅 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;

在上面的示例中,键入时并不会实际回显新密码,但是为了清楚起见,我们会显示键入了哪些内容。如您所见,在将密码发送到客户端之前会对其进行加密。

另请参见

dropuserCREATE ROLEcreaterole_self_grant