pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。
createuser — 定义一个新的PostgreSQL用户账户
createuser [option...] [username]
createuser创建一个新的PostgreSQL用户(更准确地说,是一个角色)。只有超级用户以及具有CREATEROLE权限的用户才能创建新用户,因此调用createuser的用户必须能够以超级用户或具有CREATEROLE权限的用户身份连接。
如果希望创建新的超级用户,必须以超级用户身份连接,而不能仅凭CREATEROLE权限。超级用户意味着能够绕过数据库内所有访问权限检查,因此不应轻易授予超级用户身份。
createuser是SQL命令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强制提示输入密码(用于连接服务器,而不是新用户的密码)。
PGHOSTPGPORTPGUSER默认连接参数
若遇到困难,请参见CREATE ROLE和psql, 其中讨论了潜在问题和错误消息。数据库服务器必须在目标主机上运行。 此外,libpq前端库使用的任何默认连接设置和环境变量也都会生效。
要在默认数据库服务器上创建用户 joe:
$createuser joeShall the new role be a superuser? (y/n)nShall the new role be allowed to create databases? (y/n)nShall the new role be allowed to create more new roles? (y/n)nCREATE USER
要使用主机 eden、端口 5000 上的服务器创建同一个用户 joe,避开提示并查看底层命令:
$createuser -h eden -p 5000 -S -D -R -e joeCREATE ROLE joe NOSUPERUSER NOCREATEDB NOCREATEROLE INHERIT LOGIN;CREATE ROLE
创建用户joe作为超级用户,并立即分配密码:
$createuser -P -s -e joeEnter password for new role:xyzzyEnter it again:xyzzyCREATE ROLE joe PASSWORD 'xyzzy' SUPERUSER CREATEDB CREATEROLE INHERIT LOGIN;CREATE ROLE
上面的示例中,输入密码时实际上不会回显新密码,但为清晰起见,我们显示了所输入的内容。不过,如示例所示,密码会出现在回显的命令中——因此,如果还有其他人能看到你的屏幕,在分配密码时就不要使用-e。
译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。