萬盛學電腦網

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

MySQL "Can't connect to server" 連接失敗全排查指南(錯誤碼 10061/10055/10060)

錯誤碼速查表

錯誤碼含義典型原因
10061Connection refusedMySQL 服務未啟動、端口錯誤、防火牆阻擋
10055No buffer space available連接數耗盡、TIME_WAIT 過多、TCP 參數需調優
10060Connection timed out網絡不通、防火牆攔截、IP 綁定錯誤

分類排查步驟

虛擬主機/共享主機用戶

  1. 聯系服務商確認 MySQL 服務狀態。
  2. 確認連接地址是否為 localhost 或指定 IP。
  3. 檢查控制面板數據庫配置信息。

獨立服務器/VPS 用戶(Windows)

  1. 檢查服務:services.msc → MySQL 服務狀態為「運行中」。
  2. 端口監聽:netstat -ano | findstr 3306 確認 3306 端口監聽。
  3. 防火牆:入站規則放行 3306(TCP)。
  4. 配置文件:my.ini 中 bind-address=0.0.0.0 或具體 IP,port=3306。
  5. 10055 專項:修改註冊表 TcpTimedWaitDelay 為 30~60 秒,減少 TIME_WAIT 佔用。

Linux 服務器

  1. 服務狀態:systemctl status mysqld 或 service mysql status。
  2. 端口監聽:ss -lntp | grep 3306。
  3. 防火牆:
    # iptables
    iptables -A INPUT -p tcp --dport 3306 -j ACCEPT
    service iptables save
    
    # firewalld
    firewall-cmd --permanent --add-port=3306/tcp
    firewall-cmd --reload
  4. SELinux:setsebool -P mysql_connect_any 1 或設置端口標簽。
  5. 配置文件:/etc/my.cnf [mysqld] 區段 bind-address=0.0.0.0。

應用層優化預防 10055

  • 使用連接池,避免頻繁建立/銷毀連接。
  • 將 mysql_connect() 改為 mysql_pconnect()(長連接),注意配合 wait_timeout 設置。
  • 限制單 IP 並發連接數(Nginx limit_conn、應用層限流)。
  • 代碼層面:嚴禁死循環重試、高頻輪詢。

MySQL 服務端參數調優

[mysqld]
max_connections = 1000          # 根據內存調整
wait_timeout = 60               # 空閒連接回收
interactive_timeout = 60
thread_cache_size = 64          # 緩存線程減少創建開銷
back_log = 100                  # 監聽隊列長度
copyright © 萬盛學電腦網 all rights reserved