首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 啟動失敗:mysql.sock 丟失?教你用錯誤日誌定位真兇

     編輯:MySQL 資料庫相關知識

    現象重現

    ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
    /etc/init.d/mysqld status  →  stopped
    /etc/init.d/mysqld restart →  Starting mysqld: [FAILED]

    find / -name mysql.sock 空結果,確認 Socket 檔不存在。

    關鍵轉折:讀錯誤日誌

    /var/log/mysqld.log (或 datadir/hostname.err) 顯示:

    130802 15:17:11 [ERROR] File './mysql-bin.000004' not found (Errcode: 13)
    130802 15:17:11 [ERROR] Failed to open log file

    真兇: Binlog 檔案權限錯誤 (Errcode 13 = Permission denied),導致 MySQL 拒絕啟動,自然也就不會建立 Socket 檔。

    修復步驟

    1. 修正資料目錄擁有者:
      chown -R mysql:mysql /var/lib/mysql (路徑依實際 datadir 調整)
    2. 安全模式啟動驗證:
      mysqld_safe & → 觀察無錯誤退出
    3. 正常啟動服務:
      /etc/init.d/mysqld restart → [OK]

    Socket 檔找不到怎麼連線?

    啟動成功後 Socket 實際在 /var/lib/mysql/mysql.sock,但客戶端預設找 /tmp/mysql.sock。兩種修法:

    方法一:建立軟連結 (快)

    ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock

    方法二:修正 my.cnf (正規)

    [client]
    socket = /var/lib/mysql/mysql.sock
    [mysqld]
    socket = /var/lib/mysql/mysql.sock

    核心心法

    「授人以魚不如授人以漁」—— MySQL 不啟動,第一動作永遠是看錯誤日誌,而非盲目重啟、刪檔、改配置。日誌直指根因 (權限、Binlog、InnoDB 恢復、磁碟滿),分分鐘定位,避免四小時瞎折騰。

    檢查清單

    • datadir 權限擁有者 (mysql:mysql、750/640)
    • log-bin 目錄同權限
    • tmpdir 空間、權限
    • SELinux/AppArmor 拒絕訪問 (查 /var/log/audit/audit.log)
    • 磁碟 Inode/空間耗盡 (df -i, df -h)
    1. 上一篇文章:
    2. 下一篇文章:
    Copyright © 程式碼之家 All Rights Reserved