加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

postgresql之Creatuser

发布时间:2020-12-13 16:47:44 所属栏目:百科 来源:网络整理
导读:定义一个新的 PostgreSQL 用户帐户,需要说明的是只有超级用户或者是带有 CREATEROLE 权限的用户才可以执行该命令。如果希望创建的是超级用户,那么只能以超级用户的身份执行该命令,换句话说,带有 CREATEROLE 权限的普通用户无法创建超级用户。该命令的使

定义一个新的PostgreSQL用户帐户,需要说明的是只有超级用户或者是带有CREATEROLE权限的用户才可以执行该命令。如果希望创建的是超级用户,那么只能以超级用户的身份执行该命令,换句话说,带有CREATEROLE权限的普通用户无法创建超级用户。该命令的使用方式如下:
createuser [option...] [username]
1. 命令行选项列表:

选项

说明

-cnumber

设置新创建用户的最大连接数,缺省为没有限制。

-d(--createdb)

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

-D(--no-createdb)

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

-e(--echo)

回显createuser生成的命令并且把它发送到服务器。

-E(--encrypted)

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

-i(--inherit)

新创建的角色将自动继承它的组角色的权限。

-I(--no-inherit)

新创建的角色不会自动继承它的组角色的权限。

-l(--login)

新角色将被授予登录权限,该选项为缺省选项。

-L(--no-login)

新角色没有被授予登录权限。

-N(--unencrypted)

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

-P(--pwprompt)

如果给出该选项,在创建用户时将提示设置口令。

-r(--createrole)

新角色被授予创建数据库的权限。

-R(--no-createrole)

新角色没有被授予创建数据库的权限。

-s(--superuser)

新角色为超级用户。

-S(--no-superuser)

新角色不是超级用户。

-h(--host=host)

指定PostgreSQL服务器的主机名。

-p(--port=port)

指定服务器的监听端口,如不指定,则为缺省的5432

-U(--username=username)

本次操作的登录用户名。

-w(--no-password)

如果当前登录用户没有密码,可以指定该选项直接登录。

2.应用示例:
# 对于有些没有缺省设置的选项,如-(d/D)-(s/S)-(r/R),如果在命令行中没有直接指定,那么在执行该命令是将会给出提示信息。# 需要注意的是该提示将会挂起自动化脚本,直到输入后命令才会继续执行。/> createuser -U postgres myuserShall the new role be a superuser?(y/n)nShall the new role be allowed to create databases? (y/n)yShall the new role be allowed to create more new roles? (y/n)
CREATE ROLE myuser NOSUPERUSER CREATEDB NOCREATEROLE INHERITLOGIN;
# 通过psql登录后查看系统视图,以验证该用户是否成功创建,以及新角色的权限是否正确。/> psql
postgres=# SELECTrolname,rolsuper,rolinherit,rolcreaterole,rolcreatedb,rolcanlogin FROM pg_rolesWHERE rolname = 'myuser';
rolname | rolsuper | rolinherit | rolcreaterole | rolcreatedb| rolcanlogin
---------+----------+------------+---------------+-------------+-------------
myuser | f | t |f | t | t
(1 row)
# 为了保证自动化脚本不会被该命令的提示挂起,我们需要在执行该命令时指定所有没有缺省值的选项。/> createuser -U postgres -e -S -D -R myuser2
CREATE ROLE myuser2 NOSUPERUSER NOCREATEDB NOCREATEROLEINHERIT LOGIN;
# 我们可以在创建用户时即刻指定该用户的密码,该操作由-P选项完成,然而这样的用法一定会挂起自动化脚本,# 因此我们可以采用一种折中的办法,即在创建用户时不指定密码,在自动化脚本执行成功后再手工该用户的密码。/> createuser -P -s -e myuser3Enter password for new role:Enter it again: CREATE ROLE myuser3 PASSWORD'md5fe54c4f3129f2a766f53e4f4c9d2a698' SUPERUSER CREATEDB CREATEROLE INHERITLOGIN;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读