遇到FusionCube管理员密码丢失的情况时,很多运维人员会手忙脚乱。我经历过好几次这样的紧急情况,深知一套清晰的应急流程有多重要。下面我就把实战中验证过的完整操作步骤分享给大家,涵盖3.X和6.X两个主流版本。
首先需要明确的是,密码找回的核心思路是通过数据库操作将admin密码重置为历史记录中的某个已知值。这个过程需要直接操作FusionCube Center(FCC)的底层数据库,所以每一步都要格外小心。记得去年有个客户因为操作失误导致数据库损坏,最后不得不重装整个系统,这个教训告诉我们谨慎操作的重要性。
登录FCC主节点时,建议使用浮动IP地址连接。我习惯用SSH客户端工具,比如Putty或者Xshell,连接时要注意网络连通性。有一次我花了两个小时排查问题,最后发现是防火墙规则挡住了SSH端口,这个坑希望大家能避开。
切换到root用户后,第一件事就是确认系统版本。不同版本的默认密码和数据库连接方式都有差异,这一步绝对不能跳过。查看版本的方法很简单:
bash复制cat /opt/goku/services/csm/utils/version/VERSION.inner
如果是FusionStorage节点,则需要使用这个命令:
bash复制cat /opt/*/DS*
连接数据库时需要特别注意认证信息。3.1.1之前的版本和之后的版本使用不同的密码:
bash复制# 3.1.1之前版本
su - dbadmin
gsql -d allfmdb -U fc2 -W Huaweicloud8 -p 21600
# 3.1.1及之后版本
gsql -d allfmdb -U fc2 -W IaaS@OS-CLOUD9! -p 6432
进入数据库后,我们需要先设置正确的schema路径:
sql复制set search_path=iam;
然后查询历史密码记录:
sql复制select * from TBL_IAM_HISTORYPWD WHERE USERID=1;
找到第一条历史密码记录后,执行更新操作:
sql复制update TBL_IAM_USER set USERPASSWORD='查到的密文' where USERID='1';
更新完成后一定要验证结果:
sql复制select USERID,USERNAME,USERPASSWORD from TBL_IAM_USER where USERID=1;
重置成功后,就可以用对应版本的默认密码登录了:
6.X版本的数据库连接方式有了较大变化。我刚开始迁移到6.X时也花了不少时间适应新命令:
bash复制su - dbadmin -s /bin/bash
zsql conndbadmin@127.0.0.1:6432
默认数据库密码是IaaS@OS-CLOUD8!,注意这个密码和3.X版本有所不同。有一次我下意识输入了旧版本的密码,反复尝试失败后才意识到问题所在。
6.X版本的密码重置流程更加规范:
sql复制select * from iam.tbl_iam_historypwd;
select * from iam.tbl_iam_user;
update iam.tbl_iam_user set USERPASSWORD='历史密文' where USERID='1';
commit;
特别注意6.X版本需要显式执行commit操作,这点和3.X版本自动提交不同。我就遇到过忘记commit导致重置失败的情况。
如果是FusionComputer环境,还需要额外执行VRM节点上的命令:
bash复制psql -U galax vrm -c "update sm.tbl_user set password='ed1a53af...' where username='admin' and usertype='0';"
这个命令会提示输入密码SingleLOUD!1,执行成功后admin密码会被重置为IaaS@PORTAL-CLOUD8!。
直接操作数据库存在一定风险,我有几个实用建议:
曾经有个客户在更新时误操作了其他表字段,导致权限系统崩溃。所以建议非必要情况下不要修改其他字段。
重置后的默认密码必须立即修改。我建议:
在实际运维中,我见过太多因为密码管理不善导致的安全事件。有一次某企业使用默认密码长达两年,结果被入侵造成重大损失。
如果重置后仍然无法登录,可以检查:
我遇到过portal页面缓存导致登录失败的情况,清理缓存或者换浏览器就能解决。