tidb 部署 报错

Error: failed to fetch cpu-arch or kernel-name: executor.ssh.execute_failed: Failed to execute command over SSH for ‘tidb@192.168.136.103:22’ {ssh_stderr: We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:
#1) Respect the privacy of others.
#2) Think before you type.
#3) With great power comes great responsibility.
sudo: no tty present and no askpass program specified
, ssh_stdout: , ssh_command: export LANG=C; PATH=$PATH:/bin:/sbin:/usr/bin:/usr/sbin /usr/bin/sudo -H bash -c “uname -m”}, cause: Process exited with status 1

ssh 在 tidb 用户下 正常 就是报这个错 ,怎么办

tidb用户是不是没有sudo权限

部署的时候是自己创建的tidb用户吗,做了这一步没

1 个赞

是不是没有做免密互信?

检查sudo和互信,基本上就这两个问题

检查sudo和互信,基本上就这两个问题

没有配置免密互信

你的部署命令是什么,如果可以用root连,那就用root部署 ,部署命令 -u root -p 就行,不用配置互信,也不用先创建tidb用户,会自动添加

互相免密

先要把所有机器配置免密互信

出现这个报错一般都是sudo权限没有或者是ssh互信没配好。

官网的部署步骤有很详细的指引,重新按照官方步骤再执行下吧,一般都没问题的

使用tiup做安装的用户必须配置为免密sudo,否则tiup命令会报错

手动配置 SSH 互信及 sudo 免密码

对于有需求,通过手动配置中控机至目标节点互信的场景,可参考本段。通常推荐使用 TiUP 部署工具会自动配置 SSH 互信及免密登录,可忽略本段内容。

  1. root 用户依次登录到部署目标机器创建 tidb 用户并设置登录密码。
useradd tidb && \
passwd tidb
  1. 执行以下命令,将 tidb ALL=(ALL) NOPASSWD: ALL 添加到文件末尾,即配置好 sudo 免密码。
visudo
tidb ALL=(ALL) NOPASSWD: ALL
  1. tidb 用户登录到中控机,执行以下命令。将 10.0.1.1 替换成你的部署目标机器 IP,按提示输入部署目标机器 tidb 用户密码,执行成功后即创建好 SSH 互信,其他机器同理。新建的 tidb 用户下没有 .ssh 目录,需要执行生成 rsa 密钥的命令来生成 .ssh 目录。如果要在中控机上部署 TiDB 组件,需要为中控机和中控机自身配置互信。
ssh-keygen -t rsa
ssh-copy-id -i ~/.ssh/id_rsa.pub 10.0.1.1
  1. tidb 用户登录中控机,通过 ssh 的方式登录目标机器 IP。如果不需要输入密码并登录成功,即表示 SSH 互信配置成功。
ssh 10.0.1.1
[tidb@10.0.1.1 ~]$
  1. tidb 用户登录到部署目标机器后,执行以下命令,不需要输入密码并切换到 root 用户,表示 tidb 用户 sudo 免密码配置成功。
sudo -su root
[root@10.0.1.1 tidb]#

https://docs.pingcap.com/zh/tidb/stable/check-before-deployment#手动配置-ssh-互信及-sudo-免密码

1 个赞

嗯,得配置互相免密

visudo

tidb ALL=(ALL) NOPASSWD: ALL

如果能ssh目标机root用户,就不用折腾这个了

又是ssh免密的问题,感觉每各今天就会出现一次 :face_with_monocle: :face_with_monocle: :face_with_monocle:

如果你仔细看报错信息,就会知道答案了,Failed to execute command over SSH for

用root了可以

感觉是权限问题通不过

  1. 免密互信没做
  2. 如果1做了,那么可以把tidb用户下的.ssh 的公私钥,拷贝到.tiup/storage/cluster/clusters/tidbp1/ssh/目录下