KingbaseES V8R6集群运维案例之---修改system密码后无法登录数据库

案例说明:
KingbaseES V8R6集群环境,用户忘记system密码,现场运维人员通过免密登录数据库后,修改了system密码,但system仍无法登录数据库,执行sys_encpwd工具创建.encpwd文件后,也无法免密登录数据库。
适用版本:
KingbaseES V8R6

一、问题现象

1、配置免密后登录数据库修改system密码

prod=#  alter user system password  with '12345678ab'  ;
ALTER ROLE

2、systenm登录数据库访问

如下图所示,通过.encpwd免密登录或指定密码登录,均无法登录数据库。

二、问题分析
1、查看.encpwd文件(记录用户加密口令,用于用户本地免密登录)

[kingbase@node101 ~]$ cat .encpwd
*:*:*:esrep:S2luZ2Jhc2VoYTExMA==
*:*:*:system:MTIzNDU2NzhhYg==

2、通过集群sys_encpwd工具重新创建.encpwd文件

Tips:
.encpwd中保存的密码和在数据库中修改的密码一致,仍然不能免密登录数据库。

3、查看数据库用户属性
如下图所示,竟然发现system用户中设置了密码有效期!!!

三、问题解决
1、通过alter user配置用户的密码有效期

Command:     ALTER USER
Description: change a database role
Syntax:
ALTER USER role_specification [ WITH ] option [ ... ]

where option can be:

      SUPERUSER | NOSUPERUSER
    | CREATEDB | NOCREATEDB
    | CREATEROLE | NOCREATEROLE
    | INHERIT | NOINHERIT
    | LOGIN | NOLOGIN
    | ACCOUNT { UNLOCK | LOCK }
    | REPLICATION | NOREPLICATION
    | BYPASSRLS | NOBYPASSRLS
    | CONNECTION LIMIT connlimit
    | [ ENCRYPTED ] PASSWORD 'password' | PASSWORD NULL
    | VALID UNTIL 'timestamp'

2、配置用户密码有效期

1)调整用户密码有效期

test=# alter user system password '12345678ab' valid until '2100-01-01';
ALTER ROLE
test=# \du system
                                   List of roles
 Role name |                         Attributes                         | Member of
-----------+------------------------------------------------------------+-----------
 system    | Superuser, Create role, Create DB, Replication, Bypass RLS+| {}
           | Password valid until 2100-01-01 00:00:00+08                |

如下图所示,密码有效期调整到未来的时间:

2)用户登录
uploading-image-481560.png


---如上图所示,system用户已经可以通过.encpwd文件免密登录。

3)配置用户密码无期限

test=# alter user system password '12345678ab' valid until 'infinity';
ALTER ROLE
test=# \du system
                                   List of roles
 Role name |                         Attributes                         | Member of
-----------+------------------------------------------------------------+-----------
 system    | Superuser, Create role, Create DB, Replication, Bypass RLS+| {}
           | Password valid until infinity  

查看用户属性:

test=# select * from sys_user where usename='system';
 usename | usesysid | usecreatedb | usesuper | userepl | usebypassrls |  passwd  | valuntil | useconf
ig
---------+----------+-------------+----------+---------+--------------+----------+----------+--------
---
 system  |       10 | t           | t        | t       | t            | ******** | infinity |
(1 row)

test=# select * from sys_shadow where usename='system';
 usename | usesysid | usecreatedb | usesuper | userepl | usebypassrls |
                                  passwd
    | valuntil | useconfig
---------+----------+-------------+----------+---------+--------------+------------------------------
-----------------------------------------------------------------------------------------------------
----+----------+-----------
 system  |       10 | t           | t        | t       | t            | SCRAM-SHA-256$4096:uNQhDJlR6H
rSPbCOfZsdzw==$TRBgKEBIZXnFl9JIhcw+uOBdPlSukaa0aMvGVYkqcX8=:N4q8VSA4RrGHmD82D2sVwYTAR6WqRkRdKx9J5wNu5
e8= | infinity |
(1 row)

---至此,system用户登录数据库正常。

四、总结

此次问题原因,是system用户密码被设定了一个密码期限导致,也许是早期用户的误操作。

对于KingbaseES V8R6集群中的数据库系统用户的密码,尽量不要使用手工修改,部分用户会用于集群管理,其密码存在数据库及集群配置文件,手工修改,容易遗漏,可以通过集群一键修改密码工具完成。

具体参考:https://help.kingbase.com.cn/v8/highly/availability/cluster-use/cluster-use-6.html?highlight=一键修改密码#id52

posted @ 2023-04-26 16:00  天涯客1224  阅读(106)  评论(0编辑  收藏  举报