GaussDB(DWS)用户管理详解
【摘要】 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)