Navicat出現(xiàn)無法遠(yuǎn)程連接MySql服務(wù)器問題的解決辦法
Navicat無法遠(yuǎn)程連接MySql服務(wù)器問題的解決方法寫在前面:
操作系統(tǒng):中標(biāo)麒麟4.0;數(shù)據(jù)庫:MySQL5.7.26;JDK:采用中標(biāo)麒麟系統(tǒng)自帶的openjdk;客戶端工具:Navicat;
前置條件:MySQL服務(wù)安裝完畢;
情景:
安裝好mysql,本地訪問正常,但同一個局域網(wǎng)內(nèi)的機器都無法訪問該服務(wù)器上的mysql數(shù)據(jù)庫;
原因:
mysql默認(rèn)是不可以通過遠(yuǎn)程機器訪問的,只允許本地訪問,通過下面的配置可以開啟遠(yuǎn)程訪問;
排查思路:
mysql設(shè)置遠(yuǎn)程訪問主要從以下三個方面去檢測:首先檢查網(wǎng)絡(luò),兩臺計算機之間必須能ping通,這是基礎(chǔ);第二:檢測3306端口,對于端口只允許本機訪問,有兩個地方啟用,一個是mysql配置綁定本機地址,另一個就是防火墻啟用3306;第三:mysql用戶訪問權(quán)限的問題。
根據(jù)思路逐一排查
1.網(wǎng)絡(luò)檢測:
ping mysql所在主機的ip地址看是否能ping通,如果能ping通,說明不是網(wǎng)絡(luò)的問題;我的可以ping通,說明不是網(wǎng)絡(luò)的問題;
2.端口檢測:
檢測3306端口:netstat -ntpl | grep 3306,如圖:
檢測22端口:netstat -ntpl | grep 22,如圖:
綜上可以看出22端口監(jiān)聽所有地址,而3306端口只監(jiān)聽了本地地址,所以遠(yuǎn)程無法訪問。對于端口只允許本機訪問,有兩個地方啟用,一個是防火墻啟用3306,另一個就是mysql配置綁定本機地址。所以Navicat無法連接遠(yuǎn)程MySQL這個問題我們找到問題所在了,我們只需將3306端口允許遠(yuǎn)程訪問即可;
解決辦法:一般情況下,我們只需要去修改/etc/mysql/my.cnf配置文件即可,將my.cnf配置文件中的bind-address=127.0.0.1改成bind-address=0.0.0.0,并且把skip-networking注釋掉即可;
但是我的my.cnf配置文件中并沒有bind-address=127.0.0.1和skip-networking這兩行代碼,我就自己加上了bind-address=0.0.0.0這行代碼,以為會好使,重啟系統(tǒng)后,結(jié)果,并沒有卵用!!!再次檢測3306端口,發(fā)現(xiàn)還是只允許本地訪問,就在我百思不得其解的時候,配置文件中的一句注釋引起了我的注意~此處有驚喜,問題馬上就可以解決了 > . <
然后我們再去看/etc/mysql/my.cnf配置文件,發(fā)現(xiàn)了一句話,如圖:
“從以下配置目錄導(dǎo)入所有的以.cnf結(jié)尾的文件”,嘖嘖嘖,有沒有種恍然大悟的感覺?也就是說address=127.0.0.1這行配置沒有在my.cnf配置文件中配置,可能在那兩個目錄下的某一個配置文件中配置了,所以我們就去找找看看唄,無論如何得把“address=127.0.0.1”這行代碼找到。
首先去第一個目錄:/etc/mysql/conf.d,進(jìn)去看一下cnf.d文件,如圖:
沒有“address=127.0.0.1”;
再去第二個目錄中:/etc/mysql/mariadb.conf.d/,發(fā)現(xiàn)下面有5個以.cnf結(jié)尾的文件,分別是:50-client.cnf , 50-mysql-clients.cnf , 50-mysqld_safe.cnf , 50-server.cnf , my.cnf,如圖:
用腦子猜一下,你也知道該去看哪個文件了,沒錯,我鎖定了“50-server.cnf”文件,進(jìn)去一看,果然找到了“address=127.0.0.1”這行代碼,把它改成“address=0.0.0.0”即可,如圖:
然后重啟計算機(注意這里必須要重啟計算機,重啟mysql沒用,我重啟mysql是沒用),再查看端口,如下:
開心嗎,終于改過來了,不得不吐槽一下MySQL,不光得看它配置文件中的配置,連配置文件里的注釋我們也不能忽略,嘖嘖嘖,我也是夠服氣的~~長記性了!
然而端口檢測這一步還沒有完,MySQL配置文件我們檢測完了,還有一個地方,防火墻3306端口是否開啟;
防火墻檢測:查看:iptable --list我查了一下,我的防火墻沒有開啟,如果有防火墻要開啟防火墻3306端口,或者直接關(guān)閉防火墻;
到現(xiàn)在為止,3306端口檢測就沒有問題了。
3.mysql用戶訪問權(quán)限:
進(jìn)入mysql數(shù)據(jù)庫:mysql -uroot -puse mysql;查詢用戶訪問權(quán)限:select host,user from user;如圖:
mysql建用戶時會指定一個host,默認(rèn)是127.0.0.1(localhost),只能本機訪問,其他機器用這個用戶賬號訪問時會提示沒有權(quán)限,將host改為“%”,表示允許所有機器訪問。(我這里已經(jīng)改成允許所有機器訪問了)修改的語句為:grant all on . to ‘root’@’%’ identified by ‘root用戶的密碼’ with grant option;flush privileges;
還有一個值得注意的地方是:要刪除“多余的用戶”,就拿我自己來說,我之前有兩個root用戶,如下:user hostroot %root 127.0.0.1這個時候為了避免出錯,就可以把127.0.0.1的那個root用戶刪除掉了(我這里就掉進(jìn)坑里了,我是在修改密碼的時候掉這個坑里了,修改的是%的root的密碼,結(jié)果我一直用127.0.0.1的root登錄,一直登不上去,,,);
總結(jié)
綜上所述,mysql設(shè)置遠(yuǎn)程訪問的問題就解決了,總結(jié)一下,mysql設(shè)置遠(yuǎn)程訪問主要從以下三個方面去檢測:首先檢查網(wǎng)絡(luò),兩臺計算機之間必須能ping通,這是基礎(chǔ);第二:檢測3306端口,對于端口只允許本機訪問,有兩個地方啟用,一個是mysql配置綁定本機地址(修改mysql配置文件(友情提示,不一定是my.cnf哦~要仔細(xì)閱讀配置文件中的內(nèi)容~)bind-address=0.0.0.0),另一個就是防火墻啟用3306(檢測防火墻);第三:mysql用戶訪問權(quán)限的問題。
這是我曾經(jīng)踩過的坑,覺得值得一記,所謂的經(jīng)驗,不過是踩過的坑多了,遇見的問題多了,然后解決了,從坑里跳出去了,經(jīng)驗也就有了,積累經(jīng)驗,從自己踩過的每一個坑開始,然后不斷的提升自己,加油!
到此這篇關(guān)于Navicat出現(xiàn)無法遠(yuǎn)程連接MySql服務(wù)器問題的解決辦法的文章就介紹到這了,更多相關(guān)Navicat無法遠(yuǎn)程連接MySql服務(wù)器問題內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!
相關(guān)文章:
