一、随想
从互联网上信息看,金仓数据库是业界公认的PG系数据库,想到曾经使用postgres时忘记了管理员密码的事,好歹PG重置管理员密码挺简单,今天顺便在kingbase上验证一把,竟然也一样。
二、那就行动吧
1、KingbaseES版本
KingbaseES V009R001C002B0014 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-28), 64-bit
2、查找数据库数据目录
通过 ps -ef | grep kingbase 查看数据库进程,即可找到数据文件目录:/home/kingbase/kdb/data
3、进入数据目录,查找 *hba.conf 文件(因为postgres库有配置文件:pg_hba.conf),这里找到为:sys_hba.conf
4、停止数据库
$ sys_ctl -D /home/kingbase/kdb/data stop
5、修改配置文件:sys_hba.conf
用vi编辑sys_hba.conf,将以下行中的scram-sha-256修改为trust
local all all scram-sha-256
修改后效果为:
6、重新启动数据库
[kingbase@centos7 data]$ sys_ctl -D /home/kingbase/kdb/data start
7、到此即可不用密码直接连接数据库,重置新密码。
[kingbase@centos7 ~]$ ksql -Usystem -d test -p 54321
输入 "help" 来获取帮助信息.
test=#test=# alter user system password '888888';
ALTER ROLE
8、还原配置
将第5步修改的sys_hba.conf配置还原:
local all all trust
修改为
local all all scram-sha-256
9、重启数据库
$ sys_ctl -D /home/kingbase/kdb/data restart
10、再次连接数据库就要输入密码,用重置的密码连接成功。
三、后记
忘记密码的事总是会发生在个别项目上,特别是配置了某些安全策略后,密码改着改着自己都忘记了。数据无价,安全很重要,但这种重置方案的安全性有待商榷。