0
0
0
0
专栏/.../

切换到tidb用户使用tiup命令出现bash: tiup: command not found

 FutureDB  发表于  2024-04-02

1、问题描述

在Linux系统使用tidb用户安装好tiup,以及使用tiup命令搭建好集群后,并配置好tiup环境变量并source后,tiup命令可以正常使用,但是第二次登录时从root用户切换到tidb用户使用时出现:bash: tiup: command not found。

image.png

2、相关配置和问题复现

从root用户切换到tidb用户,使用tiup命令报错:bash: tiup: command not found。

[root@BigData01 ~]# su tidb
[tidb@BigData01 root]$ tiup cluster display tidb-test
bash: tiup: command not found

查看tidb用户下的.bash_profile配置,发现已经对tiup命令配置了环境变量,并且搭建的时候已经source。

[tidb@BigData01 root]$ cat ~/.bash_profile
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
	. ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/.local/bin:$HOME/bin

export PATH=/home/tidb/.tiup/bin:$PATH

export PD_ADDR=http://127.0.0.1:2379 && tiup ctl:v7.5.1 pd

export PATH

3、问题原因及解决方法

其实这里的原因主要在于:su tidb这种方式切换用户,并不算登录行为。该方式会 source ~/.bashrc,而不会source ~/.bash_profile,因此在 ~/.bash_profile中配置的环境变量没有生效,会出现tiup命令找不到的情况。

可以通过如下命令确认,发现确实没有登录。

[tidb@BigData01 ~]$ shopt login_shell
login_shell    	off

为了解决该问题,我们从root用户使用 su - tidb 或者 su -l tidb 切换到tidb用户,这种方式会登录tidb用户。具体操作如下:

方法一:

[root@BigData01 ~]# su - tidb
Last login: Mon Apr  1 08:42:28 CST 2024 on pts/2
Last failed login: Mon Apr  1 08:45:27 CST 2024 on pts/2
There were 4 failed login attempts since the last successful login.
Starting component `ctl`: /home/tidb/.tiup/components/ctl/v7.5.1/ctl pd
[tidb@BigData01 ~]$ shopt login_shell
login_shell    	on

image.png

方法二:

[root@BigData01 ~]# su -l tidb
Last login: Mon Apr  1 08:46:00 CST 2024 on pts/2
Starting component `ctl`: /home/tidb/.tiup/components/ctl/v7.5.1/ctl pd
[tidb@BigData01 ~]$ shopt login_shell
login_shell    	on

之后,我们再使用tiup命令查询下集群,此时tiup命令可以正常使用。

[tidb@BigData01 ~]$ tiup cluster display tidb-test
tiup is checking updates for component cluster ...
Starting component `cluster`: /home/tidb/.tiup/components/cluster/v1.14.1/tiup-cluster display tidb-test
Cluster type:       tidb
Cluster name:       tidb-test
Cluster version:    v7.5.1
Deploy user:        tidb
SSH type:           builtin
Dashboard URL:      http://192.168.93.128:2379/dashboard
Grafana URL:        http://192.168.93.128:3000
ID                    Role          Host            Ports                            OS/Arch       Status  Data Dir                      Deploy Dir
--                    ----          ----            -----                            -------       ------  --------                      ----------
192.168.93.128:9093   alertmanager  192.168.93.128  9093/9094                        linux/x86_64  Up      /tidb-data/alertmanager-9093  /tidb-deploy/alertmanager-9093
192.168.93.128:8300   cdc           192.168.93.128  8300                             linux/x86_64  Up      /tidb-data/cdc-8300           /tidb-deploy/cdc-8300
192.168.93.128:3000   grafana       192.168.93.128  3000                             linux/x86_64  Up      -                             /tidb-deploy/grafana-3000
192.168.93.128:2379   pd            192.168.93.128  2379/2380                        linux/x86_64  Up|UI   /tidb-data/pd-2379            /tidb-deploy/pd-2379
192.168.93.129:2379   pd            192.168.93.129  2379/2380                        linux/x86_64  Up      /tidb-data/pd-2379            /tidb-deploy/pd-2379
192.168.93.130:2379   pd            192.168.93.130  2379/2380                        linux/x86_64  Up|L    /tidb-data/pd-2379            /tidb-deploy/pd-2379
192.168.93.128:9090   prometheus    192.168.93.128  9090/12020                       linux/x86_64  Up      /tidb-data/prometheus-9090    /tidb-deploy/prometheus-9090
192.168.93.128:4000   tidb          192.168.93.128  4000/10080                       linux/x86_64  Up      -                             /tidb-deploy/tidb-4000
192.168.93.129:9000   tiflash       192.168.93.129  9000/8123/3930/20170/20292/8234  linux/x86_64  Up      /tidb-data/tiflash-9000       /tidb-deploy/tiflash-9000
192.168.93.130:9000   tiflash       192.168.93.130  9000/8123/3930/20170/20292/8234  linux/x86_64  Up      /tidb-data/tiflash-9000       /tidb-deploy/tiflash-9000
192.168.93.128:20160  tikv          192.168.93.128  20160/20180                      linux/x86_64  Up      /tidb-data/tikv-20160         /tidb-deploy/tikv-20160
192.168.93.129:20160  tikv          192.168.93.129  20160/20180                      linux/x86_64  Up      /tidb-data/tikv-20160         /tidb-deploy/tikv-20160
192.168.93.130:20160  tikv          192.168.93.130  20160/20180                      linux/x86_64  Up      /tidb-data/tikv-20160         /tidb-deploy/tikv-20160
Total nodes: 13

image.png

4、总结

总体而言,从root用户切换为tidb用户之后使用tiup命令时报“bash: tiup: command not found”的主要原因是:采用 su tidb方式切换不算实际登录,导致tidb用户下~/.bash_profile里面的环境变量没有生效,从而导致配置到环境变量里的tiup命令无法使用。解决方式:即采用 su - tidb 或者 su -l tidb 进行切换,这两种方式会切换时,会自动 source ~/.bash_profile 使其生效,从而配置在用户环境变量里的tiup可以使用。

0
0
0
0

版权声明:本文为 TiDB 社区用户原创文章,遵循 CC BY-NC-SA 4.0 版权协议,转载请附上原文出处链接和本声明。

评论
暂无评论