写点什么

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

  • 2024-04-05
    北京
  • 本文字数:2636 字

    阅读完需:约 9 分钟

作者: FutureDB 原文来源:https://tidb.net/blog/19683371

1、问题描述

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


2、相关配置和问题复现

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


[root@BigData01 ~]# su tidb[tidb@BigData01 root]$ tiup cluster display tidb-testbash: tiup: command not found
复制代码


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


[tidb@BigData01 root]$ cat ~/.bash_profile# .bash_profile
# Get the aliases and functionsif [ -f ~/.bashrc ]; then . ~/.bashrcfi
# 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_shelllogin_shell      off
复制代码


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


方法一:


[root@BigData01 ~]# su - tidbLast login: Mon Apr  1 08:42:28 CST 2024 on pts/2Last failed login: Mon Apr  1 08:45:27 CST 2024 on pts/2There 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_shelllogin_shell      on

复制代码



方法二:


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


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


[tidb@BigData01 ~]$ tiup cluster display tidb-testtiup is checking updates for component cluster ...Starting component `cluster`: /home/tidb/.tiup/components/cluster/v1.14.1/tiup-cluster display tidb-testCluster type:       tidbCluster name:       tidb-testCluster version:    v7.5.1Deploy user:        tidbSSH type:           builtinDashboard URL:      http://192.168.93.128:2379/dashboardGrafana URL:        http://192.168.93.128:3000ID                    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-9093192.168.93.128:8300   cdc           192.168.93.128  8300                             linux/x86_64  Up      /tidb-data/cdc-8300           /tidb-deploy/cdc-8300192.168.93.128:3000   grafana       192.168.93.128  3000                             linux/x86_64  Up      -                             /tidb-deploy/grafana-3000192.168.93.128:2379   pd            192.168.93.128  2379/2380                        linux/x86_64  Up|UI   /tidb-data/pd-2379            /tidb-deploy/pd-2379192.168.93.129:2379   pd            192.168.93.129  2379/2380                        linux/x86_64  Up      /tidb-data/pd-2379            /tidb-deploy/pd-2379192.168.93.130:2379   pd            192.168.93.130  2379/2380                        linux/x86_64  Up|L    /tidb-data/pd-2379            /tidb-deploy/pd-2379192.168.93.128:9090   prometheus    192.168.93.128  9090/12020                       linux/x86_64  Up      /tidb-data/prometheus-9090    /tidb-deploy/prometheus-9090192.168.93.128:4000   tidb          192.168.93.128  4000/10080                       linux/x86_64  Up      -                             /tidb-deploy/tidb-4000192.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-9000192.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-9000192.168.93.128:20160  tikv          192.168.93.128  20160/20180                      linux/x86_64  Up      /tidb-data/tikv-20160         /tidb-deploy/tikv-20160192.168.93.129:20160  tikv          192.168.93.129  20160/20180                      linux/x86_64  Up      /tidb-data/tikv-20160         /tidb-deploy/tikv-20160192.168.93.130:20160  tikv          192.168.93.130  20160/20180                      linux/x86_64  Up      /tidb-data/tikv-20160         /tidb-deploy/tikv-20160Total nodes: 13
复制代码


4、总结

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


发布于: 刚刚阅读数: 5
用户头像

TiDB 社区官网:https://tidb.net/ 2021-12-15 加入

TiDB 社区干货传送门是由 TiDB 社区中布道师组委会自发组织的 TiDB 社区优质内容对外宣布的栏目,旨在加深 TiDBer 之间的交流和学习。一起构建有爱、互助、共创共建的 TiDB 社区 https://tidb.net/

评论

发布
暂无评论
切换到tidb用户使用tiup命令出现bash: tiup: command not found_管理与运维_TiDB 社区干货传送门_InfoQ写作社区