createuser
功能描述
createuser工具用于创建一个新的用户。
createuser是对SQL命令CREATE USER的封装。
注意事项
- 只有超级用户和具有CREATE ROLE权限的用户可以创建新的用户。 因此createuser必须由超级用户或者是具有 CREATE ROLE权限的用户执行。
- 如果用户想创建一个新的超级用户,必须以超级用户身份连接, 而不仅仅是一个有CREATE ROLE权限的用户。成为超级用户就意味着将在数据库里绕开所有访问权限检查,因此,请勿轻易授予超级用户权限。
语法格式
createuser [OPTION]... [ROLENAME]
ROLENAME:指定要创建的用户名称。
参数说明
通用参数
-c, --connection-limit=N
为新用户设置最大数目的连接限制,默认为无限制。
-d, --createdb
允许该新用户创建数据库。
-D, --no-createdb
禁止该新用户创建数据库,此选项为默认值。
-e, –echo
回显createuser生成并发送到服务端的命令。
-E, --encrypted
加密存储在数据库中的用户的密码。
-i, --inherit
指定该选项则该新角色将自动继承其所属角色组的权限,此选项为默认值。
-I, --no-inherit
该新角色将不会自动继承其所属角色组的权限。
-l, --login
指定该选项则创建的新用户具有登录权限,此选项为默认值。
-L, --no-login
指定该选项则创建的新用户没有登录权限。
-N, --unencrypted
不加密存储在数据库中的用户的密码。
-P, --pwprompt
如果指定此选项,createuser将提示输入新用户的密码。
-r, --createrole
该新用户将允许创建新角色,即该用户将拥有CREATEROLE权限。
-R, --no-createrole
该新用户将不能创建新角色。
-s, --superuser
该新用户将是一个超级用户。
-S, --no-superuser
该新用户将不是一个超级用户,这是缺省设置。
-V, --version
输出createuser命令的版本信息,然后退出。
--interactive
若没有在命令行上指定用户名,提示缺少用户名。并且
-d/-D
,-r/-R
,-s/-S
选项任何属性没有在命令行指定,也会提示缺少属性。--replication
指定该选项新用户将拥有REPLICATION权限,即角色能启动复制。
--no-replication
指定该选项新用户将拥没有REPLICATION权限,即角色不能启动复制。
--auditadmin
该新用户将具有审计管理属性。
--no-auditadmin
该新用户没有审计管理属性,该选项为缺省设置。
-?, --help
显示createuser命令的帮助信息,然后退出。
连接参数
-h, --host=HOSTNAME
指定运行服务器的主机名,如果数值以斜杠开头则被用作到Unix域套接字的路径。
-p, --port=PORT
指定主机端口号。
-U, --username=USERNAME
指定所连接主机的用户名。
-w, --no-password
不出现输入密码提示。如果主机要求密码认证并且密码没有通过其它形式给出,则连接尝试将会失败。
-W, --password
指定用户连接的密码。
使用示例
示例1: 使用如下命令创建一个超级用户joe,并立即指定一个密码。
createuser -P -s -e -E joe -E
回显如下,输入为joe用户指定密码:
Enter new system admin password:
Enter it again:
CREATE ROLE joe PASSWORD 'Huawei@123' SYSADMIN CREATEDB CREATEROLE INHERIT LOGIN;
示例2: 使用如下命令创建用户joe1,并显示额外属性提示。
createuser -P -e --interactive joe1
回显如下,输入为joe用户指定密码并选择属性:
Enter new system admin password:
Enter it again:
Shall the new role be a system admin? (y/n) n
Shall the new role be allowed to create databases? (y/n) y
Shall the new role be allowed to create more new roles? (y/n) y
CREATE ROLE joe1 PASSWORD 'Huawei@123' NOSYSADMIN CREATEDB CREATEROLE INHERIT LOGIN;