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

MySQL「Lost connection at reading initial communication packet」兩大解決路徑

     編輯:MySQL 資料庫相關知識

錯誤全文

Lost connection to MySQL server at 'reading initial communication packet', system error: 0

路徑一:innodb_buffer_pool_size 過大導致啟動失敗

檢查 my.cnf:

[mysqld]
innodb_buffer_pool_size = 2048M  # 超過物理記憶體可用量

調整為合理值(專用 DB 建議物理記憶體 60-70%):

innodb_buffer_pool_size = 1024M

重啟驗證。

路徑二:DNS 反向解析阻塞(需配合授權調整)

  1. 編輯 my.cnf:
    [mysqld]
    skip-name-resolve
  2. **前置條件**:確保所有帳號 Host 為 IP/CIDR,否則啟用後無法登入。
  3. 若未調整帳號,可暫時加入 skip-grant-tables(僅緊急救援,**極高風險**,修復後必須移除)。

輔助:TCP Wrappers 放行

# /etc/hosts.allow
mysqld : ALL : ALLOW
mysqld-max : ALL : ALLOW

網友補充方案

  • 若上述無效,備份資料 → 重裝 MySQL → 還原資料(最後手段)。
  • 檢查 bind-address 是否綁定正確介面(0.0.0.0 或具體內網 IP)。
  • 確認防火牆/安全組放行 3306。

總結決策樹

  1. 查錯誤日誌 .err → 若含 InnoDB: mmap failed / Cannot allocate memory → **調小 buffer pool**。
  2. 若無記憶體錯誤,且遠程連接慢 → **啟用 skip-name-resolve**(同步修正帳號 Host)。
  3. 仍失敗 → 檢查網路層(防火牆、TCP Wrappers、bind-address)。
  4. 最終手段 → 重裝並還原備份。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved