Cannot?Connect?to?Database?Server
緣由
由于不同的項目中使用的數據庫用戶名與密碼出現了不一致的情況,在其中之前較早一個項目執行過程中出現“the?user?specified?as?a?definer?(‘root’@’localhost’)?does?not?exist”的錯誤提示。經過網絡一番搜索,原因是root用戶不存在,故自己將用戶名改回到之前的用戶名,結果出現連接不到數據庫的情況,如下圖所示:
?
原因
1.可能數據庫服務沒有啟動
2.可能指定的數據庫連接用戶名或密碼不正確
3.可能數據庫連接語句寫得不正確
4.可能數據庫中沒有指定的數據庫存在
5.可能沒引sql包或沒有驅動程序
解決方法
Mysqlbin目錄:?C:Program?FilesMySQLMySQL?Server?5.7bin
mysql?-u?root?-p?
刪除原來的數據庫實例后,創建新的實例,發現還是無法連接數據庫,如下所示:
?
? ? ? 還是搞不定,明天繼續,還是對mysql認知度太低!………..
? ? ? 將錯誤原因逐一排除,關閉重啟mysql服務,發現還是無法登錄,自己也就納了悶了。
?
? ? ? 將mysql服務關閉后,可以進入workbench,但是還是無法連接mysql,這個是必須的。根據下圖可獲知mysql配置文件my.ini位置:
?
? ? ? 網上居然有人建議重新安裝,忍不住要爆粗口了!你妹的!這是解決問題嗎?不到萬不得已的時候,誰會選擇重裝這條道路呢!
? ? ? Can’t?connect?to?MySQL?server?on?‘127.0.0.1’?(10061)
? ? ? 檢查密碼對否
? ? ? 如何知道密碼對否?
? ? ? 密碼錯誤的話會提示密碼不對
? ? ? 查看一下你的hosts的文件
? ? ? Hosts文件位置:C:WindowsSystem32driversetc
? ? ? 難道是端口的問題?于是用telnet?127.0.0.1?3308測試端口,結果它竟然提示:
?
? ? ? my.ini中確實用的是3308端口,用netstat?-an查看,3308處于如下TIME_WAIT超時狀態:
?
? ? ? 那到底是什么原因呢?
? ? ? 在項目中測試發現也是提示“Host?‘localhost’?is?not?allowed?to?connect?to?this?MySQL?server”!要崩潰了。
? ? ? 啟動mysql服務,出現下圖錯誤:
?
? ? ? 重啟計算機解決問題。
? ? ? 還是無法連接到數據庫!
? ? ? 不要逼我,否則,我真的要重裝數據庫了!
? ? ? 嘗試無果后,重裝!
? ? ? 卸載過程中由于沒卸載干凈,導致安裝時又出現了一系列的問題。悲劇!
? ? ? Mysql卸載教程:點擊查看
? ? ? Mysql安裝教程:
? ? ??http://www.php.cn/
第二天……..
? ? ? 繼續卸載、安裝,我就不信弄不好它!
? ? ? 為防止重裝系統后重裝數據庫,將其安裝在C盤之外的其它目錄中。
? ? ? 安裝過程中出現了如下錯誤:
?
? ? ? 網絡搜尋各種方法,還是未能解決問題。
? ? ? 再次轉換思路,換個版本試試,其中嘗試了5.7.10.但其是zip格式,解壓后還需配置一系列的文件,嘗試無果后,使用了低版本的5.5.47,msi格式,這是傻瓜式安裝方式還是比較方便的。第一次安裝后,自己曾試圖將之前的數據庫恢復,無果而終,并且導致無法更改用戶名,又是一頓狂卸載,安裝,第二次之后,用戶名可以正常更改。經測試,一切正常!
? ? ? 折磨自己將近3天的問題終于以這樣的方式結束了。
感觸
? ? ? 數據庫要及時備份,否則后果不堪設想!
以上就是mysql進階(十七)Cannot Connect to Database Server的內容,更多相關內容請關注PHP中文網(www.php.cn)!