編譯安裝或二進制包安裝 MySQL 後,直接輸入 mysql 提示命令未找到,本質是 **MySQL `bin` 目錄未加入當前 Shell 的 `PATH` 環境變量**。
find / -name mysql -type f 2>/dev/null | grep '/bin/mysql$'
# 典型輸出:/usr/local/mysql/bin/mysql
ln -s /usr/local/mysql/bin/mysql /usr/bin/mysql
# 或鏈接整個 bin 目錄
ln -s /usr/local/mysql/bin /usr/bin/mysql-bin
優點: 即時生效,無需重新登錄。
缺點: 系統升級/重裝可能覆蓋 /usr/bin;僅解決 mysql 客戶端,mysqldump、mysqladmin 等工具仍需單獨鏈接。
echo 'export PATH=/usr/local/mysql/bin:$PATH' >> ~/.bash_profile
source ~/.bash_profile
echo 'export PATH=/usr/local/mysql/bin:$PATH' >> /etc/profile
source /etc/profile
cat > /etc/profile.d/mysql.sh <<'EOF'
export MYSQL_HOME=/usr/local/mysql
export PATH=$MYSQL_HOME/bin:$PATH
EOF
chmod +x /etc/profile.d/mysql.sh
source /etc/profile.d/mysql.sh
驗證: which mysql 應輸出 /usr/local/mysql/bin/mysql;mysql --version 正常顯示版本。
若在容器中構建鏡像,直接在 Dockerfile 中設置:
ENV MYSQL_HOME=/usr/local/mysql
ENV PATH=$MYSQL_HOME/bin:$PATH
或使用多階段構建從官方鏡像複製二進制文件。
bin 目錄而非安裝根目錄。chmod +x /usr/local/mysql/bin/* 確保可執行權限。update-alternatives 管理優先級,或在啟動腳本中顯式指定完整路徑。cron、systemd、ssh 遠程命令 不加載 .bash_profile,需在腳本頭部 source /etc/profile 或使用完整路徑 /usr/local/mysql/bin/mysql。配置好 /etc/profile.d/mysql.sh 並 source 後,所有交互式/登錄 Shell 均可直接使用 MySQL 全套工具,一勞永逸。