Kongdom
(Kongdom)
2021 年11 月 17 日 02:42
1
以下为在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 个赞
Jiawei
(渔不是鱼)
2022 年1 月 11 日 03:07
3
提供一种新的思路,不需要重启服务,一条语句解决。
前提是正常生产环境中,每个DBA都有自己的高权限账号,而非使用root账户。
这样的话就可以使用高权限的账号来重置root密码。
说一下我的操作方式吧,因为tidb和mysql一样,默认都是mysql_native_password加密方式
直接使用下面的sql改成自己的加密后的密码
alter user root
@%
identified with mysql_native_password as ‘加密后’;
亲测OK
9 个赞
高权限用户设置的目的是让它能更新root用户密码?还是因为知晓此用户密码,来以它为准覆盖root用户密码?
Kongdom
(Kongdom)
2022 年4 月 19 日 01:30
9
估计是为了安全,禁用了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
求解?
dapan3927
(Hacker D89x I2o Q)
2022 年5 月 15 日 02:42
13
我这里是v6.0的版本,也碰到和你一样的问题,后来找到了解决方案。在出错提示后,进入tidb部署目录/tidb-deploy/tidb-4000/bin,然后运行tidb-server,这样就可以免密连接数据库了。你尝试一下,希望对你有帮助。
1 个赞
张雨齐0720
(Zhangjig)
2022 年5 月 15 日 04:22
14
一般除了root不会在设置一个最高权限的用户了。
没有最高权限的非root用户,那么就执行修改配置跳过密码,然后重启以后设置,在修改配置的方式了。
Jiawei
(渔不是鱼)
2022 年8 月 9 日 07:01
15
不是哦,生产环境一方面是为了安全,另外一方面是为了审计。
dba-kit
(张天师)
2022 年9 月 7 日 09:22
16
补充一下,这个是因为新版本TiDB的加了校验,必须用Linux的root用户执行./scripts/run_tidb.sh
才行,所以完整的操作步骤为:
tiup cluster stop ${CLUSTER_NAME} -R tidb
使用root用户登陆tidb-server机器
cd到tidb-server的deploy目录
修改conf/tidb.toml
增加[security]
skip-grant-table = true
执行bash scripts/run_tidb.sh &
登陆TiDB修改root密码mysql -h 127.0.0.1 -P 4000 -u root -e "alter user root identified by '*******' "
tiup cluster reload ${CLUSTER_NAME} -R tidb
(因为我们没有修改tiup中的元数据,所以reload重启tidb-server时候,会覆盖掉我们手动在配置中新增的skip-grant-table
参数)
3 个赞