MySQL 無法連接 can't connect to mysql server on 'localhost' (10055)


記錄一次失敗的服務器問題排查。

1. 問題

    環境:windows2012 、mysql 5.6

    出現問題:重啟MySQL服務,顯示啟動成功,用第三工具連接時提示:錯誤碼2003  can't connect to mysql server on 'localhost' (10055);

    通過cmd命令嘗試連接,還是無法連接。

    首先確定mysql服務已經啟動了,如果未啟動就連接的話也會有這樣的錯誤提示。

2.排查並嘗試解決

   第一反應先百度 can't connect to mysql server on 'localhost' (10055),得到參考,進行以下修改:

  • 通過注冊表配置動態分配端口的最大值,在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters里加上如下的鍵值:

          ValueName: MaxUserPort (有博主的情況是只修改這一項)

          ValueType: DWORD

          Valuedata: 65534

  • 通過注冊表配置連接等待時間,在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters加上

    鍵值:TcpTimedWaitDelay

    數值類型:REG_DWORD - 時間(以秒為單位)

    有效范圍:30-300(十進制)

    默認值:0x78(十進制 120)

         由於文章太多,我也記不清到底是參考哪位博主的了,有一位博主介紹了MaxUserPort和TcpTimedWaitDelay,鏈接地址:https://www.cnblogs.com/tianzhiliang/articles/2400176.html

     可能是當時沒重啟服務器,做完以上修改后重啟MySQL服務后問題依舊存在。

 

3.梳理

   關閉其他服務,只啟動MySQL數據庫的服務,通過命令netstat -ano查看當前已使用的端口,發現只有很少一部分。再次嘗試連接數據庫,問題依舊存在,此時我有點懵了。

   選擇修改MaxUserPort和TcpTimedWaitDelay,是覺得沒有可用的連接才造成數據庫無法連接,可是現在根本就沒有占用多少連接,更懵了。

 

4.重啟大法

由於已經有用戶再使用該系統,所以只能先解決當前問題,無奈只能采用重啟大法,重啟后該問題不再復現。

 

5.總結

   平時對服務器的操作就比較少,也是第一次遇見這個情況,雖然這次沒找到問題的原因,但是總結一下,如果再此發生這個問題也能有個思路。

  • 先看數據庫的錯誤日志,在my.ini文件中(C:\ProgramData\MySQL\MySQL Server 5.6下),找到log-error="LAPTOP-KP8RB178.err"(C:\ProgramData\MySQL\MySQL Server 5.6\data下)。
  • 還得排查端口占用情況,netstat -aon|findstr 3306命令,查看數據庫的TCP連接情況,如果很多狀態為TIME_WAIT的連接,關閉這些連接后再試試。
  • 有位博主的建議是關閉防火牆,由於對服務器防火牆知識了解不多,我當時直接把Windows Firewall服務給關了,很尷尬,無法遠程了,這個方案做個備選吧。
  • 數據庫版本和系統兼容問題,看了這篇文章后才有這個猜測,都是English,有些地方我肯定也沒整明白。

 

還有一些參考鏈接如下:

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM