createuser

createuser —定义一个新的 PostgreSQL 用户帐户

Synopsis

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

Description

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

如果要创建新的超级用户,则必须以超级用户身份连接,而不仅仅是具有CREATEROLE特权。成为超级用户意味着能够绕过数据库内的所有访问权限检查,因此不应轻易授予超级用户权限。

createuser 是 SQL 命令CREATE ROLE的包装。通过此 Util 和其他访问服务器的方法创建用户之间没有有效的区别。

Options

createuser 接受以下命令行参数:

createuser 还接受以下命令行参数作为连接参数:

此选项从不是必需的,因为如果服务器要求密码验证,则 createuser 会自动提示 Importing 密码。但是,createuser 会浪费连接尝试,因为发现服务器需要密码。在某些情况下,值得 Importing-W以避免额外的连接尝试。

Environment

与大多数其他 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

上一章 首页 下一章