mysql鏈接數據庫失敗, 提示bad handleshake

情景復原:

    某電腦昨天還能正常鏈接數據庫, 今天就提示鏈接不上, 提示bad handleshake錯誤

    原因是服務器端口(3306)被佔用

    藉機學習window下查看端口占用情況以及殺死進程的常用命令

分析:

1. 用navicat鏈接, 提示Access Denied, 按理來說一般是密碼錯誤, 可密碼是沒有問題的, 於是排除

2. 懷疑是不是mysql的服務沒有正常啓動, 於是打開服務可以看到, mysql的服務已經啓動, 但是由於裝了兩個版本mysql, 懷疑是服務啓動錯誤,啓動了另一個服務, 於是將原先服務停止, 切換到另一個mysql的服務, 重新嘗試連接, 最終還是失效了

盲區:

開發時, 一般端口被佔用是服務啓動服務的, 於是直接判斷端口沒有被佔用, 這是錯誤的

不知道爲啥3306端口被佔用, 還能啓動mysql的服務

下面關於查看端口占用情況以及殺死進程的常用命令, 最好背下來, 常用

1. 查看所有端口情況

netstat -ano

通過這個命令可以清晰的查看到3306被 PID爲3528的進程佔用了, 可以打開任務管理器, 找到詳細信息這一欄, 根據PID查找到這個進程, 如果是錯誤佔用,可以直接結束進程, 問題解決, 此時演示情況是正常情況。。。

比如我開啓啓動tomcat服務器, 可以通過netstat -ano查看8080端口被哪個進程佔用, 根據對應的PID可以找到相應進程

2. 查看被佔用端口對應的PID

netstat -ano | findstr 15038

這是用來查看進程號爲12538這個進程佔用的端口以及進程一些信息

3. 殺死進程

比如我們現在要在idea中啓動tomcat服務器, 發現提示端口已經被佔用, 於是我們通過netstat -ano查看端口占用情況, 發現8080端口被進程15036佔用了, 通過命令

tasklist

查看當前正在運行的所有進程

或者通過

tasklist | findstr 15036

 

可以確定15036進程對應這nodejs的服務, 原來是我在webstorm中啓動了nodejs. 於是纔會端口占用

通過命令殺死這個進程

比如可以使用

taskkill /f /t /im node.exe

提示進程成功殺死

重新查看端口占用情況

已經無法查看到8080端口的佔用情況了, 證明進程被成功殺死, 此時可以正常啓動tomcat服務器了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章