GaussDB(DWS)用户管理详解

举报
yd_281561943 发表于 2024/05/06 15:42:23 2024/05/06
【摘要】 GaussDB(DWS)用户管理详解 GaussDB(DWS)用户管理详解 1. 前言 2. 用户的基本操作 2.1 创建用户 2.2 修改用户属性 2.3 锁定用户 2.4 删除用户 3. 用户密码 3.1 密码相关GUC参数 3.2 密码相关安全函数 4. 用户相关系统表、系统视图 1. 前言适用版本:【8.0.0(及以上)】  本文介绍用户管理 2. 用户的基本操作 2.1 创建用户...

GaussDB(DWS)用户管理详解

1. 前言

  • 适用版本:【8.0.0(及以上)】

  本文介绍用户管理

2. 用户的基本操作

2.1 创建用户

CREATE USER语句用于创建新的GaussDB(DWS)用户。创建新用户后,可以使用该用户连接数据库。

2.2 修改用户属性

ALTER USER语句用于更改用户属性(例如,更改用户密码或权限等内容)。

2.3 锁定用户

ALTER USER语句中ACCOUNT LOCK | ACCOUNT UNLOCK参数用于锁定或者解锁用户,被锁定的用户不允许登陆。

2.4 删除用户

DROP USER语句用于删除一个或多个GaussDB(DWS)用户。

  • 同时删除多个用户时,用","隔开。
  • 成功删除用户后,该用户的所有权限也会被一同删除。
  • 当删除的用户正处于活动状态时,此会话状态不会立马断开,用户在会话状态断开后才会被完全删除。
  • DROP USER语句指定CASCADE时,可级联删除依赖用户的表等对象。即删除owner是该用户的对象,并清理掉其他对象对该用户的授权信息。

3. 用户密码

3.1 密码相关GUC参数

guc参数
参数说明
参数类型
取值范围 默认值
password_policy 在使用CREATE ROLE/USER或者ALTER ROLE/USER命令创建或者修改GaussDB(DWS)帐户时,该参数决定是否进行密码复杂度检查。 SIGHUP 整型,0、1
0表示不采用任何密码复杂度策略。
1表示采用默认密码复杂度校验策略。
1
password_reuse_time 在使用ALTER USER或者ALTER ROLE修改用户密码时,该参数指定是否对新密码进行可重用天数检查。 SIGHUP 浮点型,0~3650,单位为天。
0表示不检查密码可重用天数。
正数表示新密码不能为该值指定的天数内使用过的密码。
60
password_reuse_max 在使用ALTER USER或者ALTER ROLE修改用户密码时,该参数指定是否对新密码进行可重用次数检查。 SIGHUP 整型,0~1000
0表示不检查密码可重用次数。
正整数表示新密码不能为该值指定的次数内使用过的密码。
0
password_lock_time 该参数指定帐户被锁定后自动解锁的时间。 SIGHUP 浮点型,0~365,单位为天。
0表示密码验证失败时,自动锁定功能不生效。
正数表示帐户被锁定后,当锁定时间超过password_lock_time设定的值时,帐户将会被自行解锁。
1
failed_login_attempts 在任意时候,如果输入密码错误的次数达到failed_login_attempts则当前帐户被锁定,password_lock_time秒后被自动解锁。 例如,登录时输入密码失败,ALTER USER时修改密码失败等。 SIGHUP 整型,0~1000
0表示自动锁定功能不生效。
正整数表示当错误密码次数达到failed_login_attempts设定的值时,当前帐户将被锁定。
10
password_encryption_type 该字段决定采用何种加密方式对用户密码进行加密存储。 SIGHUP 整型,0、1、2 0表示采用md5方式对密码加密。
1表示采用sha256方式对密码加密,兼容postgres客户端的MD5用户认证方式。
2表示采用sha256方式对密码加密。
2
password_min_length 该字段决定帐户密码的最小长度。 SIGHUP 整型,6~999 8
password_max_length 该字段决定帐户密码的最大长度。 SIGHUP 整型,6~999 32
password_min_uppercase 该字段决定帐户密码中至少需要包含大写字母个数。 SIGHUP 整型,0~999
0表示没有限制。
1~999表示创建账户所指定的密码中至少需要包含大写字母个数。
0
password_min_lowercase 该字段决定帐户密码中至少需要包含小写字母的个数。 SIGHUP 整型,0~999
0表示没有限制。
1~999表示创建帐户所指定的密码中至少需要包含小写字母个数。
0
password_min_digital 该字段决定帐户密码中至少需要包含数字的个数。 SIGHUP 整型,0~999 0表示没有限制。1~999表示创建帐户所指定的密码中至少需要包含数字个数。 0
password_min_special 该字段决定帐户密码中至少需要包含特殊字符个数。 SIGHUP 整型,0~999 0表示没有限制。1~999表示创建帐户所指定的密码中至少需要包含特殊字符个数。 0
password_effect_time 该字段决定帐户密码的有效时间。 SIGHUP 浮点型,0~999,单位为天。0表示不开启有效期限制功能。1~999表示创建帐户所指定的密码有效期,临近或超过有效期系统会提示用户修改密码。 90
password_notify_time 该字段决定帐户密码到期前提醒的天数。 SIGHUP 整型,0~999,单位为天。0表示不开启提醒功能。1~999表示帐户密码到期前提醒的天数。 7

3.2 密码相关安全函数

gs_password_deadline()
描述:显示当前帐户距离密码过期的时间。密码过期后提示用户修改密码。与GUC参数password_effect_time相关。
返回值类型:interval
示例:

postgres=# SELECT gs_password_deadline();
  gs_password_deadline   
-------------------------
 83 days 17:44:32.196094
(1 row)

gs_password_expiration()
描述:显示当前帐户距离密码过期的时间。密码过期后用户无法登录数据库。与创建用户的DDL语句PASSWORD EXPIRATION period相关,函数返回值大于等于-1,如果创建用户时未指定PASSWORD EXPIRATION period,该函数的缺省值为-1,表示没有过期限制。
返回值类型:interval
示例:

postgres=# SELECT gs_password_expiration();
  gs_password_expiration   
-------------------------
 29 days 23:59:49.731482
(1 row)

4. 用户相关系统表、系统视图

  系统表、系统视图中涉及用户、角色及权限相关的有pg_user、pg_authid、pg_roles、pg_auth_members。

  • pg_user
    PG_USER只存储用户信息,提供了访问数据库用户的信息。:
postgres=# SELECT * FROM pg_user;
 usename | usesysid | usecreatedb | usesuper | usecatupd | userepl |  passwd  | valbegin | valuntil |   respool    | parent | spacelimit | useconfig | nodegroup | tempspacelimit | spillspacelimit 
---------+------------+-------------+----------+-----------+---------+----------+----------+----------+--------------+--------+------------+-----------+-----------+----------------+-----------------
 dbadmin |       10 | t           | t        | t         | t       | ******** |          |          | default_pool |      0 |            |           |           |                | 
(1 row)
  • pg_authid
    PG_AUTHID系统表存储有关数据库认证标识符(角色)的信息。角色把“用户”的概念包含在内。一个用户实际上就是一个rolcanlogin标志被设置的角色。任何角色(不管rolcanlogin设置与否)都能够把其他角色作为成员。在一个集群中只有一份pg_authid,不是每个数据库有一份。需要有系统管理员权限才可以访问此系统表。
postgres=# SELECT oid, * FROM pg_authid WHERE rolname like 'gs_role_%' ORDER BY oid;
 oid |        rolname         | rolsuper | rolinherit | rolcreaterole | rolcreatedb | rolcatupdate | rolcanlogin | rolreplication | rolauditadmin | rolsystemadmin | rolconnlimit | rolpassword | rolvalidbegin | rolvaliduntil |  rolrespool  | roluseft | rolparentid | roltabspace | rolkind | rolnodegroup | roltempspace | rolspillspace | rolexcpdata | rolauthinfo | rolpwdexpire | rolpwdtime | roluuid 
-----+------------------------+----------+------------+---------------+-------------+--------------+-------------+----------------+---------------+----------------+--------------+-------------+---------------+---------------+--------------+----------+-------------+-------------+---------+--------------+--------------+---------------+-------------+-------------+--------------+------------+---------
 100 | gs_role_read_all_stats | f        | t          | f             | f           | f            | f           | f              | f             | f              |           -1 |             |               |               | default_pool | f        |           0 |             | n       |            0 |              |               |             |             |           -1 |            |        
 101 | gs_role_signal_backend | f        | t          | f             | f           | f            | f           | f              | f             | f              |           -1 |             |               |               | default_pool | f        |           0 |             | n       |            0 |              |               |             |             |           -1 |            |        
 102 | gs_role_analyze_any    | f        | t          | f             | f           | f            | f           | f              | f             | f              |           -1 |             |               |               | default_pool | f        |           0 |             | n       |            0 |              |               |             |             |           -1 |            |        
 103 | gs_role_vacuum_any     | f        | t          | f             | f           | f            | f           | f              | f             | f              |           -1 |             |               |               | default_pool | f        |           0 |             | n       |            0 |              |               |             |             |           -1 |            |        
 104 | gs_role_redaction      | f        | t          | f             | f           | f            | f           | f              | f             | f              |           -1 |             |               |               | default_pool | f        |           0 |             | n       |            0 |              |               |             |             |           -1 |            |        
 105 | gs_role_sql_management | f        | t          | f             | f           | f            | f           | f              | f             | f              |           -1 |             |               |               | default_pool | f        |           0 |             | n       |            0 |              |               |             |             |           -1 |            |        
(6 rows)
  • pg_roles
    PG_ROLES视图提供访问数据库角色的相关信息。
postgres=# SELECT * FROM pg_roles WHERE rolname like 'gs_role_%' ORDER BY oid;
        rolname         | rolsuper | rolinherit | rolcreaterole | rolcreatedb | rolcatupdate | rolcanlogin | rolreplication | rolauditadmin | rolsystemadmin | rolconnlimit | rolpassword | rolvalidbegin | rolvaliduntil |  rolrespool  | rolparentid | roltabspace | rolconfig | oid | roluseft | rolkind | nodegroup | roltempspace | rolspillspace 
------------------------+----------+------------+---------------+-------------+--------------+-------------+----------------+---------------+----------------+--------------+-------------+---------------+---------------+--------------+-------------+-------------+-----------+-----+----------+---------+-----------+--------------+---------------
 gs_role_read_all_stats | f        | t          | f             | f           | f            | f           | f              | f             | f              |           -1 | ********    |               |               | default_pool |           0 |             |           | 100 | f        | n       |           |              | 
 gs_role_signal_backend | f        | t          | f             | f           | f            | f           | f              | f             | f              |           -1 | ********    |               |               | default_pool |           0 |             |           | 101 | f        | n       |           |              | 
 gs_role_analyze_any    | f        | t          | f             | f           | f            | f           | f              | f             | f              |           -1 | ********    |               |               | default_pool |           0 |             |           | 102 | f        | n       |           |              | 
 gs_role_vacuum_any     | f        | t          | f             | f           | f            | f           | f              | f             | f              |           -1 | ********    |               |               | default_pool |           0 |             |           | 103 | f        | n       |           |              | 
 gs_role_redaction      | f        | t          | f             | f           | f            | f           | f              | f             | f              |           -1 | ********    |               |               | default_pool |           0 |             |           | 104 | f        | n       |           |              | 
 gs_role_sql_management | f        | t          | f             | f           | f            | f           | f              | f             | f              |           -1 | ********    |               |               | default_pool |           0 |             |           | 105 | f        | n       |           |              | 
(6 rows)
  • pg_auth_members
    PG_AUTH_MEMBERS系统表存储显示角色之间的成员关系,即某个角色组包含了哪些其他角色,通过grant和revoke来使一个角色成为或不成为另一个角色的成员。
postgres=# select * from pg_auth_members;
 roleid | member | grantor | admin_option 
--------+--------+---------+--------------
(0 rows)
postgres=# create role r1 password 'Gauss_234';
CREATE ROLE
postgres=# create role r2 password 'Gauss_234';
CREATE ROLE
postgres=# grant r2 to r1;
GRANT ROLE
postgres=# select * from pg_auth_members;
   roleid   |   member   | grantor | admin_option 
------------+------------+---------+--------------
 2147485790 | 2147485787 |      10 | f
(1 row)
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。