[FAQ] TiDB 忘记 root 密码,重置 root 密码

重置root密码

  1. 找出不是owner的tidb服务器

使用命令:curl http://172.16.5.89:10680/info

ip: tidb-server ip地址

port: tidb_status_port 端口

找出is_owner:false的服务器.

  1. 停止此服务器上的tidb-server服务

使用tidb用户, 找到<dir_deploy>/scripts目录,执行命令./stop_tidb.sh

[tidb@test2 scripts]$ ./stop_tidb.sh

使用ps命令确认tidb-server进程已经停止

[tidb@test2 scripts]$ ps -ef | grep tidb-server

3.登录这台非owenr的服务器, 找到<dir_deploy>/conf目录,编辑tidb.toml文件

找到 [security] 标签,添加 skip-grant-table = true

  1. 使用root用户执行

切换到<dir_deploy>/scripts目录,执行命令

./run_tidb.sh

此时进程会在后台进行

  1. 复制一个新的session,确保tidb-server 已经启动

[tidb@test2 ~]$ ps -ef | grep tidb-server

root 190770 169530 1 15:46 pts/1 00:00:01 bin/tidb-server -P 4060 --status=10680 --advertise-address=172.16.5.84 --path=172.16.5.89:2679,172.16.5.84:2679,172.16.5.90:2679 --config=conf/tidb.toml --enable-binlog --log-slow-query=/data2/ryl/deploy/log/tidb_slow_query.log --log-file=/data2/ryl/deploy/log/tidb.log

  1. 在这个新的session上面,使用无密码登录root用户

mysql -uroot -h172.16.5.84 -P4060

注意:端口使用自己配置的tidb_port

  1. set password for命令为root用户重置密码

举例:root密码修改为12345

mysql> set password for root = ‘12345’;

Query OK, 0 rows affected (0.01 sec)

  1. 停止在前台启动的session上的进程,关闭tidb-server服务,ctrl+c关闭进程

  2. 登录这台非owenr的服务器, 找到<dir_deploy>/conf目录,编辑tidb.toml文件

找到 [security] 标签,删除 skip-grant-table = true

  1. 使用tidb用户

切换到<dir_deploy>/scripts目录,执行命令./start_tidb.sh

[tidb@test2 ~]$ cd /data2/ryl/deploy/scripts/

[tidb@test2 scripts]$ ./start_tidb.sh

  1. 验证使用新密码可以登录此服务器

检查进程存在

ps -ef | grep tidb-server

检查新密码可以登录

7 个赞