萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 資料庫 >> MySQL 教學

解決 mysqld_safe 啟動報錯:The file /usr/local/mysql/bin/mysqld does not exist

錯誤現象

[mysql@host ~]$ mysqld_safe
21:31:19 mysqld_safe Logging to '/opt/mysql/mysqldata/host.err'.
21:31:19 mysqld_safe The file /usr/local/mysql/bin/mysqld
does not exist or is not executable. Please cd to the mysql installation
directory and restart this script from there as follows:
./bin/mysqld_safe&

根因

mysqld_safe 腳本內部**硬編碼**尋找 /usr/local/mysql/bin/mysqld,二進制包安裝若非此路徑會失敗。

解決方案

方法一:建立符號連結 (最快)

su - root
mkdir -p /usr/local/mysql/bin
ln -s /opt/mysql/product/5.5/bin/mysqld /usr/local/mysql/bin/mysqld
# 再次啟動
mysqld_safe

方法二:修改 mysqld_safe 腳本 (徹底)

vim /opt/mysql/product/5.5/bin/mysqld_safe
# 找到 MY_BASEDIR_VERSION 或 MYSQLD 相關路徑變數
# 修改為實際安裝路徑
MY_BASEDIR_VERSION=/opt/mysql/product/5.5
# 或修改 MY_MYSQLD 絕對路徑

方法三:使用 systemd 服務管理 (推薦生產)

參考 通用二進制包安裝文檔 建立 /etc/systemd/system/mysqld.service,直接 systemctl start mysqld,繞過 mysqld_safe。

驗證啟動成功

ps -ef | grep mysqld
# 應看到 mysqld_safe 與 mysqld 兩進程

netstat -tnlp | grep 3306
# 監聽 3306

mysql -u root -p -S /var/run/mysqld/mysqld.sock -e "SELECT VERSION();"

相關配置檔路徑優先級

MySQL 讀取 my.cnf 順序 (後蓋前):

  1. /etc/my.cnf
  2. /etc/mysql/my.cnf
  3. SYSCONFDIR/my.cnf (編譯時指定,通常 /etc)
  4. $MYSQL_HOME/my.cnf
  5. datadir/my.cnf
  6. --defaults-file= 指定檔案 (最高優先級,排他)

建議統一管理 /etc/my.cnf,其餘位置不放配置。

總結

方法優點缺點適用場景
符號連結秒級修復、不改動原始碼升級需重建連結快速測試、臨時環境
修改腳本徹底修復升級覆蓋腳本失效固定版本長期運行
systemd 服務標準化、開機自啟、依賴管理需 systemd 支援 (CentOS 7+)生產環境標準部署
copyright © 萬盛學電腦網 all rights reserved