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

解決「Lost connection to MySQL server at reading authorization packet, system error: 0」連線中斷錯誤

     編輯:MySQL 資料庫相關知識

高負載下常見錯誤,根因多為 connect_timeout 過短(預設 5 秒)導致握手超時。本文提供從參數調整、網路優化到封包大小的完整排查清單。

進入 MySQL 命令列

# 已設環境變數
mysql -u root -p
# 未設環境變數
F:\AppServ\MySQL\bin\mysql.exe -u root -p

注意:每句以分號 ; 結束;修改全域變數後需 重啟 MySQL 服務 生效(或寫入 my.ini 的 [mysqld] 區段)。

核心解決方案

  1. 增加 connect_timeout
    SET GLOBAL connect_timeout = 60;
    觀察 SHOW STATUS LIKE 'aborted%':
    Aborted_connects 持續增大即需調大此值。
  2. 跳過 DNS 反解析
    [mysqld] skip-name-resolve 減少域名解析延遲。
  3. 保障網路頻寬
    伺服器網卡 ≥ 100Mbps,避免擁塞導致握手封包遺失。
  4. 調整 net_read_timeout
    若發生在 mysql_query 階段:SET GLOBAL net_read_timeout = 60;
  5. 增加 max_allowed_packet
    若 SQL 含 BLOB/TEXT 大欄位:SET GLOBAL max_allowed_packet = 64M;(視實際需求調整)。

驗證指標

SHOW STATUS LIKE 'aborted%';
-- Aborted_clients: 客戶端非正常斷開
-- Aborted_connects: 連線嘗試被伺服器放棄
操作順序建議:先調 connect_timeout + skip-name-resolve 觀察 1 天;若仍有錯誤再調 net_read_timeout、max_allowed_packet;最後檢查網路硬體與防火牆規則。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved