最近在做數據庫遷移的時候,需要在一台全新機器上部署mysql,於是呢,我把舊機器上的mysql版本和配置文件全部挪了過來,並啟動了mysql,一切看似都很順利。。。。。
安裝好配置完成密碼之后,興沖沖的跑去navicat連着試一下,結果。。。啪,連不上。。。。
於是呢,到處找經驗,大致的意思就是客戶端沒有權限登錄,於是按照推薦的方式查看了權限 select user,hosts from user;
這不是妥妥的有權限嗎????
這里順便記錄下如果沒有權限的話怎么處理,很簡單,控制台登錄mysql,
use mysql; 切換到mysql表
grant
all
privileges
on
*.*
to
root@
"%"
identified
by
"123456"
; 給所有的ip添加權限
flush privileges; 刷新mysql系統權限表,讓生效
就可以了:
回歸問題:
再次查資料,這次針對性的去查,直接插錯誤碼10038,不查不知道,一查嚇一跳,這TM妥妥的不是3306端口沒有對外開放的意思么,這么簡單直接。。
於是懷疑到兩個地方:
1、防火牆
2、配置問題,真的沒有配置對外開放
那么一個一個來看:
iptables -L 走你。。。
並沒有開啟軟件防火牆。。
那么再看一下端口:netstat -anp |grep 3306 截圖沒有篩選,湊合看吧!
果然 ,這里是啥玩意配的,我都看不懂,不管他,反正是不太對,正常情況下應該是127.0.0.1:3306 或者0.0.0.0:3306,前者是只允許本機訪問,后者是所有可訪問,因此我們要用navicat訪問,必須修改為0.0.0.0:3306
於是編輯 vim /etc/my.cfg
添加或者修改 bind-address = 0.0.0.0
重啟在次連接,沒有任何問題。。。