[FAQ]TiDB忘记 root 密码,停机如何重置root密码

以下为在v4.0.0环境下重置密码的操作,需要停机重置。不停机重置root密码参考 [FAQ] TiDB 忘记 root 密码,重置 root 密码

1、通过tiup cluster edit-cluster [集群名称]进行配置修改,在server_configs中添加配置

server_configs:
    tidb:
        security.skip-grant-table: true

2、通过tiup cluster stop [集群名称] 停止集群,通过tiup cluster start [集群名称] 启动集群

PS:应该使用reload也可以,当时是停止后重新启动的

3、此时密码就是空了,可以正常设置密码了

4、还原配置,将配置中添加的skip-grant-table去掉!!!并reload配置

8赞

ok,:smile:

1赞

提供一种新的思路,不需要重启服务,一条语句解决。
前提是正常生产环境中,每个DBA都有自己的高权限账号,而非使用root账户。
这样的话就可以使用高权限的账号来重置root密码。
说一下我的操作方式吧,因为tidb和mysql一样,默认都是mysql_native_password加密方式
直接使用下面的sql改成自己的加密后的密码
alter user root@% identified with mysql_native_password as ‘加密后’;
亲测OK

9赞

谢谢楼上的兄弟

客气了兄弟 哈哈哈

可以先设置跳过,无秘密登录,在设置

感觉好复杂

高权限用户设置的目的是让它能更新root用户密码?还是因为知晓此用户密码,来以它为准覆盖root用户密码?

估计是为了安全,禁用了root用户,然后另外创建一个高权限用户,避免被攻击。
我理解的对么?@Jiawei

我照你的方法做失败了,版本v5.3.1 ,
tiup cluster edit-config mytidb
server_configs:
tidb:
log.slow-threshold: 300
security.skip-grant-table: true

tiup cluster reload mytidb, 报错如下:
Error: init config failed: 192.168.3.140:4000: executor.ssh.execute_failed: Failed to execute command over SSH for ‘tidb@192.168.3.140:22’ {ssh_stderr: load config file: /tidb-deploy/tidb-4000/conf/tidb.toml
invalid config TiDB run with skip-grant-table need root privilege
, ssh_stdout: , ssh_command: export LANG=C; PATH=$PATH:/bin:/sbin:/usr/bin:/usr/sbin /tidb-deploy/tidb-4000/bin/tidb-server --config-check --config=/tidb-deploy/tidb-4000/conf/tidb.toml }, cause: Process exited with status 1: check config failed

求解?

我这里是v6.0的版本,也碰到和你一样的问题,后来找到了解决方案。在出错提示后,进入tidb部署目录/tidb-deploy/tidb-4000/bin,然后运行tidb-server,这样就可以免密连接数据库了。你尝试一下,希望对你有帮助。

一般除了root不会在设置一个最高权限的用户了。
没有最高权限的非root用户,那么就执行修改配置跳过密码,然后重启以后设置,在修改配置的方式了。