概要描述
鉴于有部分情况,管理员会忘记 TDH Manager 的 admin 用户密码,本文总结了在忘记 admin 用户密码的情形下,如何重置 admin 用户密码。
详细说明
由于不同版本和模式下,Manager 的密码存放策略不同,所以在进行更改密码操作前,务必先确认以下信息:
- TDH 集群的版本;
- Manager 是否开启了 HA 高可用
附录:常用密码的加密串
密码 | 加密串 |
admin | c3198638fb7027b8f5631462e10e3b69 |
123456 | a90041423ab65ef6f9db957654c43d54 |
1、4.X 版本
4.x 版本的 Manager 数据是以 json 文件保存的,当忘记密码时,只需要修改 json 文件里面的密码串即可;其中分为单机模式和 HA 模式:
- 单机模式下只需要修改 Manager 节点的 json 文件即可
- HA 模式下元数据是由 zookeeper 管理,所以需要修改 active 节点的数据,并加载至 zookeeper 中
1.1 Manager 非 HA 部署
ssh 登录到 Manager 节点,到节点的 /var/lib/transwarp-manager/master/data/data 目录,更改 User.json 文件中 admin 用户的密码串即可。
$ cd /var/lib/transwarp-manager/master/data/data
$ vi User.json
可更改下图所示字段为 123456 对应常用密码串如:
重启 Manager,然后就可以用 admin 用户以密码 123456 登录 Manager 的 8180 了。
$ service transwarp-manager stop && sleep 3 && service transwarp-manager start
1.2 Manager HA 部署
TDH 从 4.6 开始提供管理节点高可用功能,在 4.X 版本中开启 Manager HA 后,Manager 的配置数据是存在其自身的 zookeeper 里,默认端口号为 2111. 可以执行命令 grep -iE "transwarp.manager.master.zookeeper.clientPort" /etc/transwarp-manager/master/ha.properties
确认。Manager 的配置文件在 zookeeper 中的默认 node 为:/transwarp/manager/data。
-
浏览器打开任意 Manager 的 8180,在 Windows 本机的
C:\Windows\System32\drivers\etc\hosts
文件配置了 TDH 集群 ip 和 hostname 映射关系的前提下,浏览器会自动跳转到当前 Active 的 Manager 地址,然后 ssh 登录该 Active 节点 -
在 active 节点执行
curl -X POST http://{active状态Manager的地址}:{Manager端口}/ha/flushToDisk
先备份下当前数据,如:
$ curl -X POST http://localhost:8180/ha/flushToDisk
- 依次执行如下命令(直接复制执行即可!),细心更改 admin 用户密码为 123456 对应常用密码串
$ cp -fv /var/lib/transwarp-manager/master/data/data/User.json /tmp/User.json
$ vi /tmp/User.json
- 请采用如下完整命令更新 ZK 中的 Node 数据(直接复制执行即可!!!)
$ echo \'$(cat /tmp/User.json)\' | xargs -I {} zookeeper-client -server localhost:2111 set /transwarp/manager/data/User.json {}
- 检查 ZK 中的 Node 数据是否正确更新无误
$ zookeeper-client -server localhost:2111 get /transwarp/manager/data/User.json
- 继续在该 Active 节点执行如下命令重启 Manager
$ service transwarp-manager stop && sleep 3 && service transwarp-manager start
- 重新打开浏览器,以 admin 用户用密码 123456 登录验证
2、5.X 及其以上版本
5.x 版本的 Manager 数据是采用数据库保存的,当忘记密码时,需要修改数据库对应的 user 表里面的密码串,分为单机模式和 HA 模式:
- 单机模式下,Manager 采用的是 Mariadb 数据库,只需要登录 Manager 节点的Mariadb 并修改admin密码;
- HA 模式下元数据是由分布式 txsql 数据库管理,所以需要登录 active 节点的 txsql 数据库,修改 user 表里面的 admin 用户的密码;
2.1 Manager 非 HA 部署
ssh 登录到 Manager 节点,按如下操作:
- 登录进 mysql
$ mysql -h localhost -u transwarp -p$(cat /etc/transwarp-manager/master/db.properties | grep io.transwarp.manager.db.password | awk -F = '{print $2}') -S /var/run/mariadb/transwarp-manager-db.sock -D transwarp_manager
- 在 mysql 里执行如下语句更改 admin 用户的密码为 123456,然后退出 mysql
use transwarp_manager;
select name, fullName, passwdEncrypt from user;
update user set passwdEncrypt='a90041423ab65ef6f9db957654c43d54' where name='admin';
quit
- 然后用密码 123456 再次登录 Manager 的 8180 验证
2.2 Manager HA 部署:
ssh 登录到当前 Manager 的 Active 节点。按如下操作:
- 执行以下命令找出 TxSQL 的容器ID
$ docker ps | grep -i manager-txsql
- 进入容器
$ docker exec -it <容器ID> /bin/bash
- 在容器里执行命令登录 TxSQL
$ /usr/bin/txsql/tools/txsql.sh shell
- 在 TxSQL 里更改密码,然后退出 TxSQL
use transwarp_manager;
select name, fullName, passwdEncrypt from user;
update user set passwdEncrypt='a90041423ab65ef6f9db957654c43d54' where name='admin';
quit
- 退出容器 ,然后打开浏览器用密码 123456 登录验证