createuser

Name

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

Synopsis

createuser [option...] [username]

描述

createuser创建一个新的 PostgreSQL 用户(或者更准确地说,一个角色)。 只有超级用户和有 CREATEROLE 权限的用户可以创建新的用户。 因此,createuser 必须由某位可以以超级用户或者是有 CREATEROLE 权限的用户连接的用户执行。

如果你希望创建一个新的超级用户,你必须以超级用户身份连接, 而不仅仅是一个有 CREATEROLE 权限的。 成为超级用户就意味着在数据库里绕开所有访问权限检查的能力,因此,不要轻易赋予超级用户权限。

createuserSQL 命令 CREATE ROLE 的封装。 因此,用哪种方法创建新用户都没什么特别的。

选项

createuser 接受下列命令行参数:

username

声明要创建的 PostgreSQL 角色名称。 该名称必须在该 PostgreSQL 安装的所有角色中唯一。

-s
--superuser

新用户将是超级用户。

-S
--no-superuser

新用户将不是超级用户。这个是缺省。

-d
--createdb

允许该新建用户创建数据库。

-D
--no-createdb

禁止该新建用户创建数据库。这个是缺省。

-r
--createrole

新用户将被允许创建新角色(也就是说,这个用户将有 CREATEROLE 权限)。

-R
--no-createrole

新用户将不允许创建新的角色。这个是缺省。

-l
--login

新用户将允许登录(也就是说,用户名可以用做初试会话用户标识)。 这个是缺省。

-L
--no-login

新用户将不能允许登录(一个不能登录的角色仍然是很有用的,比如用于权限管理。)

-i
--inherit

新角色将自动继承他所处角色组的权限。这个是缺省。

-I
--no-inherit

新角色将不会自动继承他所处角色组的权限。

-c number
--connection-limit number

为新用户设置最大数目的连接数。缺省是设置为无限制。

-P
--pwprompt

如果给出,createuser 将发出一个提示符要求输入新用户的口令。 如果你不打算用口令认证,那么这是不必要的。

-E
--encrypted

对用户存储在数据库里的口令进行加密。 如果没有声明,使用缺省的口令行为。

-N
--unencrypted

不要加密用户存储在数据库里的口令。如果没有声明,使用缺省的口令行为。

-e
--echo

回显 createuser 生成的命令并将其发送到服务器。

-q
--quiet

不显示响应。

如果没有在命令行上声明名称和其他的一些缺少的信息,脚本会提示你输入。

createuser 还接受下列命令行参数用作连接参数:

-h host
--host host

声明运行服务器的机器的主机名。 如果数值以斜杠开头,则它被用做到 Unix 域套接字的路径。

-p port
--port port

声明服务器 正在侦听的互联网 TCP 端口号或本地Unix域套接字的文件扩展(描述符)。

-U username
--username username

连接的用户名(不是要创建的用户名)。

-W
--password

强制口令提示(与服务器连接的口令,不是新用户的口令。)

环境

PGHOST
PGPORT
PGUSER

缺省连接参数。

诊断

如果出现问题,将会显示后端错误信息。参阅 CREATE ROLEpsql 获取可能信息描述。数据库服务器必须在目标主机上运行。 同样,任何 libpq 前端库使用的缺省连接设置和环境变量都将适用。

例子

在缺省数据库服务器上创建一个用户 joe

$ createuser 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
CREATE USER

用在主机eden上的服务器创建用户 joe,端口是 5000,避免提示并且显示执行的命令:

$ createuser -h eden -p 5000 -S -D -R -e joe
CREATE ROLE joe NOSUPERUSER NOCREATEDB NOCREATEROLE INHERIT LOGIN;
CREATE ROLE

要把用户 joe 创建为超级用户,并且立即赋予口令:

$ createuser -P -s -e joe
Enter password for new role: xyzzy
Enter it again: xyzzy
CREATE ROLE joe PASSWORD 'xyzzy' SUPERUSER CREATEDB CREATEROLE INHERIT LOGIN;
CREATE ROLE

在上面的例子中,新的口令在输入的时候实际上不会回显,我们在这里显示出来主要是为了清晰。 不过,密码在回显模式下是回显的 — 就像上面显示的那样; 所以,如果别人可能看得到你的屏幕,那你不应该使用 -e 来赋予口令。

又见

dropuser, CREATE ROLE, 环境变量(Section 28.11