createuser

Name

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

Synopsis

createuser [options...] [username]

描述

createuser创建一个新的 PostgreSQL 用户。只有超级用户(在 pg_shadow 表里面设置了 usesuper 的用户)可以创建新的 PostgreSQL 用户。 因此,createuser 必须由某位 可以以 PostgreSQL 超级用户连接的用户执行.

作为超级用户同时也意味着绕开数据库内访问检查的能力, 因此我们应该少赋予超级用户权限.

createuser 是一个 shell 脚本,通过 PostgreSQL 交互终端 psql 封装了 SQL 命令 CREATE USER 。 因此,用那种方法创建新用户都没什么特别的。 这意味着 psql 应用 必须能被脚本找到并且有一个数据库服务器在目标主机上运行。同样,任何 psqllibpq 前端库可用的缺省设置和环境变量都将生效。

选项

createuser 接受下列命令行参数:

username

声明要创建的 PostgreSQL 用户名称。 该名称必须在所有 PostgreSQL 用户中唯一。

-a
--adduser

允许该新建用户创建其他用户。 (注意∶实际上这样做相当于把这个新用户变成了 超级用户,只不过这个选项命名得比较烂.)

-A
--no-adduser

不允许该新建用户创建其他用户。 (也就是说,该用户是一个普通用户,不是超级用户).

-d
--createdb

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

-D
--no-createdb

禁止该新建用户创建数据库。

-e
--echo

回现 createuser 生成的查询并发送给服务器。

-E
--encrypted

对保存在数据库里的用户口令加密.如果没有声明, 则使用缺省值.

-i uid
--sysid uid

允许你给新用户使用非缺省用户标识。这个也不是必须的,但是有些人喜欢这样。

-N
--unencrypted

不对保存在数据库里的用户口令加密.如果没有声明, 则使用缺省值,

-q
--quiet

不显示响应。

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

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

-h host
--host host

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

-p port
--port port

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

-U username
--username username

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

-W
--password

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

环境

PGHOST
PGPORT
PGUSER

缺省连接参数。

诊断

CREATE USER

一切正常。

createuser: creation of user "username" failed

出了差错,用户没有创建。

如果出现错误,将会显示后端错误信息。参阅 CREATE USERpsql 获取可能信息描述。

例子

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

$ createuser joe
Is the new user allowed to create databases? (y/n) n
Shall the new user be allowed to create more new users? (y/n) n
CREATE USER

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

$ createuser -p 5000 -h eden -D -A -e joe
CREATE USER "joe" NOCREATEDB NOCREATEUSER
CREATE USER

又见

dropuser, CREATE USER