kingbase system 无法解锁sso用户
开启三权分立之后: system(系统管理员)没有权限修改/解锁 sso(安全员账号)北京人大金...。 sso 账号被 sys_audlog 密码错误策略锁住,system 执行 alter user sso with login 不会生效,不会报错,但是 locked 状态不变,这是三权互相牵制的安全机制,不是 bug。
规则:sso 安全员账号,只能自己或者单用户模式 / 关闭审计插件来解锁,system 无权干预 sso 账号状态。
方案 1:操作系统本地 trust 免密登录(优先,业务不用停库)
- 修改
$KINGBASE_DATA/sys_hba.conf
#本地改为trust
local all all trust
- 修改
kingbase.conf
local_auth_method=trust
- 重载配置,不需要重启数据库
sys_ctl reload -D $KINGBASE_DATA
- 操作系统 kingbase 用户本地直接登录,不要加 - U 参数,操作系统身份认证
ksql -d postgres
此时是本地超级内核身份,绕过三权分立限制,可以修改 sso
执行:
--查看锁定状态
SELECT usename,locked FROM sys_user WHERE usename='sso';
--解锁 +重置密码
ALTER USER sso WITH LOGIN PASSWORD '新强密码';
✅解锁完成,务必复原配置,否则无密码风险: 把 sys_hba.conf、kingbase.conf 改回原来 md5/scram,再执行一次 sys_ctl reload。
方案 2:临时卸载 sys_audlog 审计锁定插件(重启生效)
sso 是因为密码输错被 sys_audlog 锁住;卸载插件,所有账号锁定状态全部清空。
- 修改 kingbase.conf
shared_preload_libraries=''
- 重启 kingbase 数据库
sys_ctl restart -D $KINGBASE_DATA
- 登录 system,此时 sso 锁定状态自动清除
ksql -U system -d postgres
ALTER USER sso WITH LOGIN PASSWORD '新密码';
业务完成后,恢复审计插件(等保必须)
shared_preload_libraries='sys_audlog'
重启库,重建插件:
CREATE EXTENSION sys_audlog;
方案 3:单用户模式(上面两种不行再用,业务中断)
#停止数据库
sys_ctl stop -D $KINGBASE_DATA
#进入单用户模式
ksql -D $KINGBASE_DATA postgres
单用户 shell 内直接执行解锁:
ALTER USER sso WITH LOGIN PASSWORD '新密码';
\q
#正常启动数据库
sys_ctl start -D $KINGBASE_DATA
浙公网安备 33010602011771号