KingbaseES V8R3 集群運維系列 -- 修改system用戶密碼


案例說明:

   對於kingbaseES V8R3集群修改system密碼相比單機環境有一定的復雜性,需要修改的位置如下:
   1)數據庫中system用戶密碼,可以用alter user命令修改
   2)在recovery.conf和recovery.done文件中,備庫連接主庫時,需要使用system用戶認證
   3)集群認證文件cluster_passwd中需要使用system用戶認證

適用版本:

  KingbaseES V8R3

案例操作步驟:


1、修改數據庫system用戶密碼,可以分兩種情況:
     1)在集群正常運行時,直接在主庫修改,自動同步到備庫,然后再在主備庫用system新密碼登錄測試。
     2)正常關閉集群后,只啟動主備庫數據庫服務,確認流復制狀態正常后,在主庫修改system密碼,然后在主備庫登錄測試。
2、正常關閉集群,修改主備庫中recovery.conf和recovery.done中的system密碼,(注意data和etc目錄下都要修改)。
3、修改主備庫中kingbasecluster連接中的SYSTEM密碼,此密碼采用md5加密。
4、重新啟動集群測試。
5、查看集群中節點的狀態,流復制狀態,system用戶訪問數據庫的狀態。
6、確認修改成功。

集群架構:

一、修改數據庫用戶system密碼(在主庫完成)

1) 通過kingbase_monitor.sh關閉集群

通過手工方式啟動主備庫的數據庫服務(sys_ctl),保證主備庫的流復制狀態正常(sys_stat_replication),登錄主庫修改system用戶訪問數據庫的口令,備庫自動通過主備復制同步修改。

2)登錄數據庫修改system用戶密碼


[kingbase@node1 bin]$ /home/kingbase/cluster/kha/db/bin/ksql -U system -W 123456 -d TEST
ksql (V008R003C002B0180)
Type "help" for help.

TEST=# alter user system with password 'beijing';
ALTER ROLE
TEST=# \q

3)用新密碼登錄測試


[kingbase@node1 bin]$ /home/kingbase/cluster/kha/db/bin/ksql -U system -W 123456 -d TEST
ksql: FATAL:  password authentication failed for user "system"

[kingbase@node1 bin]$ /home/kingbase/cluster/kha/db/bin/ksql -U system -W beijing -d TEST
ksql (V008R003C002B0180)
Type "help" for help.


TEST=# \c prod;
You are now connected to database "prod" as user "system".

二、在主備庫修改recovery.conf 和recovery.done文件密碼


注意: 
     1)除了修改主備庫data目錄下的recovery.done和recovery.conf文件。
     2)還要修改主備庫etc下的recovery.done文件,這個文件在備庫用network_rewind.sh做recovery時會覆蓋備庫data下的recovery.conf文件。

1、修改備庫recovery.conf:
1) 查看system原密碼
Tips:
在recovery.conf文件中,對system密碼做了加密處理。


[kingbase@node2 data]$ cat recovery.conf
standby_mode='on'
primary_conninfo='port=54321 host=192.168.7.248 user=SYSTEM password=MTIzNDU2 application_name=node02'
recovery_target_timeline='latest'
primary_slot_name ='slot_node02'

2)加密system用戶新密碼

將加密后的新密碼的字符串,替換原文件中的密碼字符串,加密前的密碼和數據庫system登錄密碼要匹配。(加密和解密方式參考官方資料)

3)修改recovery.conf和recovery.done文件


[kingbase@node2 data]$ cat recovery.conf
standby_mode='on'
primary_conninfo='port=54321 host=192.168.7.248 user=SYSTEM password=YmVpamluZwo= application_name=node02'
recovery_target_timeline='latest'
primary_slot_name ='slot_node02'

[kingbase@node2 data]$ cat ../etc/recovery.done
standby_mode='on'
primary_conninfo='port=54321 host=192.168.7.248 user=SYSTEM password=YmVpamluZwo= application_name=node02'
recovery_target_timeline='latest'
primary_slot_name ='slot_node02'

2、修改etc/recovery.done文件

三、修改cluster_passwd文件(注意SYSTEM用戶名要用大寫)

1、修改主庫cluster_passwd

1)備份原cluster_passwd文件

[kingbase@node1 etc]$ cp cluster_passwd cluster_passwd.old

2)通過sys_md5工具生成新的密碼


[kingbase@node1 etc]$ cd ../bin
[kingbase@node1 bin]$ ./sys_md5  -m -f ../etc/kingbasecluster.conf -u SYSTEM beijing

3)對比新舊密碼


[kingbase@node1 bin]$ cat ../etc/cluster_passwd
SUPERMANAGER_V8ADMIN:md5f7902af5f3f7cdcad02b5ca09320d102
SYSTEM:md53b8241a37e0492c38a986844abb8d06b

[kingbase@node1 bin]$ cat ../etc/cluster_passwd.old
SUPERMANAGER_V8ADMIN:md5f7902af5f3f7cdcad02b5ca09320d102
SYSTEM:md53afebd0fba6df9fc2cf82c0b09926bcc

2、修改備庫cluster_passwd


[kingbase@node2 data]$ cd ../..
[kingbase@node2 kha]$ cd kingbasecluster/bin

[kingbase@node2 bin]$ cat ../etc/cluster_passwd
SUPERMANAGER_V8ADMIN:md5f7902af5f3f7cdcad02b5ca09320d102
SYSTEM:md53afebd0fba6df9fc2cf82c0b09926bcc

#執行sys_md5工具生成新的密碼
[kingbase@node2 bin]$ ./sys_md5  -m -f ../etc/kingbasecluster.conf -u SYSTEM beijing
[kingbase@node2 bin]$ cat ../etc/cluster_passwd
SUPERMANAGER_V8ADMIN:md5f7902af5f3f7cdcad02b5ca09320d102
SYSTEM:md53b8241a37e0492c38a986844abb8d06b

四、重啟集群驗證

1) 重啟集群服務

[kingbase@node2 bin]$ ./kingbase_monitor.sh restart
-----------------------------------------------------------------------
2021-03-22 11:07:20 KingbaseES automation beging...
2021-03-22 11:07:20 stop kingbasecluster [192.168.7.248] ...
.......
Authorized users only. All activities may be monitored and reported.
=======================================================================
|             ip |                       program|              [status]
[  192.168.7.248]|             [kingbasecluster]|              [active]
[  192.168.7.249]|             [kingbasecluster]|              [active]
[  192.168.7.248]|                    [kingbase]|              [active]
[  192.168.7.249]|                    [kingbase]|              [active]
=======================================================================

2)查看集群服務進程

[kingbase@node2 bin]$ ps -ef |grep kingbase
kingbase  380605       1  0 Mar21 ?        00:00:04 /home/kingbase/cluster/kha6/kha6/kingbase/bin/kbha -A daemon -f /home/kingbase/cluster/kha6/kha6/kingbase/bin/../etc/repmgr.conf
kingbase  717813       1  0 11:07 ?        00:00:00 /home/kingbase/cluster/kha/db/bin/kingbase -D /home/kingbase/cluster/kha/db/data
kingbase  717814  717813  0 11:07 ?        00:00:00 kingbase: logger process
kingbase  717815  717813  0 11:07 ?        00:00:00 kingbase: startup process   recovering 000000010000000000000006
kingbase  717819  717813  0 11:07 ?        00:00:00 kingbase: checkpointer process
kingbase  717820  717813  0 11:07 ?        00:00:00 kingbase: writer process
kingbase  717821  717813  0 11:07 ?        00:00:00 kingbase: stats collector process
kingbase  717822  717813  0 11:07 ?        00:00:00 kingbase: wal receiver process   streaming 0/60000D0
root      718723       1  0 11:08 ?        00:00:00 ./kingbasecluster -n
root      718766  718723  0 11:08 ?        00:00:00 kingbasecluster: watchdog
root      718767  718723  0 11:08 ?        00:00:00 kingbasecluster: lifecheck
root      718768  718767  0 11:08 ?        00:00:00 kingbasecluster: heartbeat receiver
root      718769  718767  0 11:08 ?        00:00:00 kingbasecluster: heartbeat sender
root      718770  718723  0 11:08 ?        00:00:00 kingbasecluster: wait for connection request
.........
root      718786  718723  0 11:08 ?        00:00:00 kingbasecluster: PCP: wait for connection request
root      718787  718723  0 11:08 ?        00:00:00 kingbasecluster: worker process

五、在主庫上驗證集群狀態

[kingbase@node1 bin]$ ./ksql -U SYSTEM -W beijing -p 9999 TEST
ksql (V008R003C002B0180)
Type "help" for help.

TEST=# show pool_nodes;
 node_id |   hostname    | port  | status | lb_weight |  role   | select_cnt | load_balance_node | replication_delay
---------+---------------+-------+--------+-----------+---------+------------+----------
 0       | 192.168.7.248 | 54321 | up     | 0.500000  | primary | 0          | true              | 0
 1       | 192.168.7.249 | 54321 | up     | 0.500000  | standby | 0          | false             | 0
(2 rows)

TEST=# select * from sys_stat_replication;
  pid   | usesysid | usename | application_name |  client_addr  | client_hostname | client_port |         backend_start         | backend_xmin |   state   | sent_location | write_location | flush_location | replay_location | sync_priority | sync_state
--------+----------+---------+------------------+---------------+-----------------+-----
 744439 |       10 | SYSTEM  | node02           | 192.168.7.249 |                 |       18376 | 2021-03-22 11:07:44.130199+08 |              | streaming | 0/60000D0     | 0/60000D0      | 0/60000D0      | 0/60000D0       |           2 | sync
(1 row)

六、總結
本案例是在通用機版本下完成,不同的版本修改,system用戶是數據庫管理中的管理員,對於密碼的修改,盡量能在測試環境下先測試成功后,再在生產環境實施。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM