萬盛學電腦網

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

MySQL 無法啟動常見原因分析與解決方案彙總

典型故障現象

  • 修改 my.cnf 後服務掛掉,報 Unknown suffix 'B' used for variable 'query_cache_size' (value '0B')。
  • 啟動報 1067 進程意外終止。
  • 非正常關機後無法啟動,錯誤日誌顯示 ibdata1、ib_logfile* 損壞。

核心排查步驟

  1. 檢查錯誤日誌(通常在 datadir 下的 .err 或系統 /var/log/mysqld.log)。
  2. 驗證設定檔語法:mysqld --help --verbose 2>&1 | head -20 或直接啟動測試 mysqld --validate-config(8.0+)。
  3. 確認權限與路徑:datadir、socket、pid-file 目錄屬主為 mysql:mysql。
  4. 檢查端口佔用:netstat -tlnp | grep 3306。

常見錯誤與修正對照表

錯誤訊息原因解決方法
Unknown suffix 'B' ... 'query_cache_size'單位寫成 0B,MySQL 只認 K/M/G改為 query_cache_size=0 或 0K
1067 進程意外終止my.ini 路徑錯、basedir/datadir 不存在、引擎不支援修正路徑、刪除多餘 my.ini、將 default-storage-engine=INNODB 改為 MYISAM(舊版)
InnoDB: Unable to open datafileibdata1 損壞或路徑錯從備份還原 ibdata1、ib_logfile*、.frm、.ibd
Can't create test file目錄權限不足chown -R mysql:mysql /datadir
Port 3306 already in use殘留進程或其他程式佔用kill -9 PID 或改 port

Windows 環境特有解法

  • 刪除 C:\Windows\my.ini,只保留安裝目錄下的 my.ini。
  • 以管理員身分執行:
    mysqld --remove
    mysqld --install
    net start mysql
  • 字元集修改導致 1067:請用 MySQLInstanceConfig.exe 重新配置,勿手改 my.ini。

Linux 環境特有解法

  • 將 mysql.server 複製到 /etc/init.d/,執行 chkconfig --add mysql。
  • SELinux 可能阻擋:setsebool -P mysqld_disable_trans 1 或調整標籤。

終極大招:重裝 MySQL

  1. 完整卸載、刪除安裝目錄與 C:\Windows\my.ini(或 /etc/my.cnf)。
  2. 清理殘留服務:sc delete mysql (Win) / systemctl disable mysqld (Linux)。
  3. 重新安裝、初始化資料目錄(mysqld --initialize-insecure 8.0+)。
copyright © 萬盛學電腦網 all rights reserved