Navicat出現(xiàn)無(wú)法遠(yuǎn)程連接MySql服務(wù)器問(wèn)題的解決辦法
Navicat無(wú)法遠(yuǎn)程連接MySql服務(wù)器問(wèn)題的解決方法寫在前面:
操作系統(tǒng):中標(biāo)麒麟4.0;
數(shù)據(jù)庫(kù):MySQL5.7.26;
JDK:采用中標(biāo)麒麟系統(tǒng)自帶的openjdk;
客戶端工具:Navicat;
前置條件:
MySQL服務(wù)安裝完畢;
情景:
安裝好mysql,本地訪問(wèn)正常,但同一個(gè)局域網(wǎng)內(nèi)的機(jī)器都無(wú)法訪問(wèn)該服務(wù)器上的mysql數(shù)據(jù)庫(kù);
原因:
mysql默認(rèn)是不可以通過(guò)遠(yuǎn)程機(jī)器訪問(wèn)的,只允許本地訪問(wèn),通過(guò)下面的配置可以開啟遠(yuǎn)程訪問(wèn);
排查思路:
mysql設(shè)置遠(yuǎn)程訪問(wèn)主要從以下三個(gè)方面去檢測(cè):首先檢查網(wǎng)絡(luò),兩臺(tái)計(jì)算機(jī)之間必須能ping通,這是基礎(chǔ);第二:檢測(cè)3306端口,對(duì)于端口只允許本機(jī)訪問(wèn),有兩個(gè)地方啟用,一個(gè)是mysql配置綁定本機(jī)地址,另一個(gè)就是防火墻啟用3306;第三:mysql用戶訪問(wèn)權(quán)限的問(wèn)題。
根據(jù)思路逐一排查
1.網(wǎng)絡(luò)檢測(cè):
ping mysql所在主機(jī)的ip地址
看是否能ping通,如果能ping通,說(shuō)明不是網(wǎng)絡(luò)的問(wèn)題;
我的可以ping通,說(shuō)明不是網(wǎng)絡(luò)的問(wèn)題;
2.端口檢測(cè):
檢測(cè)3306端口:
netstat -ntpl | grep 3306,如圖:

檢測(cè)22端口:
netstat -ntpl | grep 22,如圖:

綜上可以看出22端口監(jiān)聽所有地址,而3306端口只監(jiān)聽了本地地址,所以遠(yuǎn)程無(wú)法訪問(wèn)。對(duì)于端口只允許本機(jī)訪問(wèn),有兩個(gè)地方啟用,一個(gè)是防火墻啟用3306,另一個(gè)就是mysql配置綁定本機(jī)地址。所以Navicat無(wú)法連接遠(yuǎn)程MySQL這個(gè)問(wèn)題我們找到問(wèn)題所在了,我們只需將3306端口允許遠(yuǎn)程訪問(wèn)即可;
解決辦法:
一般情況下,我們只需要去修改/etc/mysql/my.cnf配置文件即可,將my.cnf配置文件中的bind-address=127.0.0.1改成bind-address=0.0.0.0,并且把skip-networking注釋掉即可;
但是我的my.cnf配置文件中并沒(méi)有bind-address=127.0.0.1和skip-networking這兩行代碼,我就自己加上了bind-address=0.0.0.0這行代碼,以為會(huì)好使,重啟系統(tǒng)后,結(jié)果,并沒(méi)有卵用?。?!再次檢測(cè)3306端口,發(fā)現(xiàn)還是只允許本地訪問(wèn),就在我百思不得其解的時(shí)候,配置文件中的一句注釋引起了我的注意~此處有驚喜,問(wèn)題馬上就可以解決了 > . <
然后我們?cè)偃タ?etc/mysql/my.cnf配置文件,發(fā)現(xiàn)了一句話,如圖:

“從以下配置目錄導(dǎo)入所有的以.cnf結(jié)尾的文件”,嘖嘖嘖,有沒(méi)有種恍然大悟的感覺?也就是說(shuō)address=127.0.0.1這行配置沒(méi)有在my.cnf配置文件中配置,可能在那兩個(gè)目錄下的某一個(gè)配置文件中配置了,所以我們就去找找看看唄,無(wú)論如何得把“address=127.0.0.1”這行代碼找到。
首先去第一個(gè)目錄:/etc/mysql/conf.d,進(jìn)去看一下cnf.d文件,如圖:

沒(méi)有“address=127.0.0.1”;
再去第二個(gè)目錄中:/etc/mysql/mariadb.conf.d/,發(fā)現(xiàn)下面有5個(gè)以.cnf結(jié)尾的文件,分別是:50-client.cnf , 50-mysql-clients.cnf , 50-mysqld_safe.cnf , 50-server.cnf , my.cnf,如圖:

用腦子猜一下,你也知道該去看哪個(gè)文件了,沒(méi)錯(cuò),我鎖定了“50-server.cnf”文件,進(jìn)去一看,果然找到了“address=127.0.0.1”這行代碼,把它改成“address=0.0.0.0”即可,如圖:

然后重啟計(jì)算機(jī)(注意這里必須要重啟計(jì)算機(jī),重啟mysql沒(méi)用,我重啟mysql是沒(méi)用),再查看端口,如下:

開心嗎,終于改過(guò)來(lái)了,不得不吐槽一下MySQL,不光得看它配置文件中的配置,連配置文件里的注釋我們也不能忽略,嘖嘖嘖,我也是夠服氣的~~長(zhǎng)記性了!
然而端口檢測(cè)這一步還沒(méi)有完,MySQL配置文件我們檢測(cè)完了,還有一個(gè)地方,防火墻3306端口是否開啟;
防火墻檢測(cè):
查看:iptable --list
我查了一下,我的防火墻沒(méi)有開啟,如果有防火墻要開啟防火墻3306端口,或者直接關(guān)閉防火墻;
到現(xiàn)在為止,3306端口檢測(cè)就沒(méi)有問(wèn)題了。
3.mysql用戶訪問(wèn)權(quán)限:
進(jìn)入mysql數(shù)據(jù)庫(kù):mysql -uroot -p
use mysql;
查詢用戶訪問(wèn)權(quán)限:
select host,user from user;如圖:

mysql建用戶時(shí)會(huì)指定一個(gè)host,默認(rèn)是127.0.0.1(localhost),只能本機(jī)訪問(wèn),其他機(jī)器用這個(gè)用戶賬號(hào)訪問(wèn)時(shí)會(huì)提示沒(méi)有權(quán)限,將host改為“%”,表示允許所有機(jī)器訪問(wèn)。(我這里已經(jīng)改成允許所有機(jī)器訪問(wèn)了)
修改的語(yǔ)句為:grant all on . to ‘root'@'%' identified by ‘root用戶的密碼' with grant option;
flush privileges;
還有一個(gè)值得注意的地方是:要?jiǎng)h除“多余的用戶”,就拿我自己來(lái)說(shuō),我之前有兩個(gè)root用戶,如下:
user host
root %
root 127.0.0.1
這個(gè)時(shí)候?yàn)榱吮苊獬鲥e(cuò),就可以把127.0.0.1的那個(gè)root用戶刪除掉了(我這里就掉進(jìn)坑里了,我是在修改密碼的時(shí)候掉這個(gè)坑里了,修改的是%的root的密碼,結(jié)果我一直用127.0.0.1的root登錄,一直登不上去,,,);
總結(jié)
綜上所述,mysql設(shè)置遠(yuǎn)程訪問(wèn)的問(wèn)題就解決了,總結(jié)一下,mysql設(shè)置遠(yuǎn)程訪問(wèn)主要從以下三個(gè)方面去檢測(cè):首先檢查網(wǎng)絡(luò),兩臺(tái)計(jì)算機(jī)之間必須能ping通,這是基礎(chǔ);第二:檢測(cè)3306端口,對(duì)于端口只允許本機(jī)訪問(wèn),有兩個(gè)地方啟用,一個(gè)是mysql配置綁定本機(jī)地址(修改mysql配置文件(友情提示,不一定是my.cnf哦~要仔細(xì)閱讀配置文件中的內(nèi)容~)bind-address=0.0.0.0),另一個(gè)就是防火墻啟用3306(檢測(cè)防火墻);第三:mysql用戶訪問(wèn)權(quán)限的問(wèn)題。
這是我曾經(jīng)踩過(guò)的坑,覺得值得一記,所謂的經(jīng)驗(yàn),不過(guò)是踩過(guò)的坑多了,遇見的問(wèn)題多了,然后解決了,從坑里跳出去了,經(jīng)驗(yàn)也就有了,積累經(jīng)驗(yàn),從自己踩過(guò)的每一個(gè)坑開始,然后不斷的提升自己,加油!
到此這篇關(guān)于Navicat出現(xiàn)無(wú)法遠(yuǎn)程連接MySql服務(wù)器問(wèn)題的解決辦法的文章就介紹到這了,更多相關(guān)Navicat無(wú)法遠(yuǎn)程連接MySql服務(wù)器問(wèn)題內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- navicat無(wú)法遠(yuǎn)程連接mysql的解決方法
- 解決MySQL無(wú)法遠(yuǎn)程連接的方法
- Centos7下無(wú)法遠(yuǎn)程連接mysql數(shù)據(jù)庫(kù)的原因與解決
- mysql8.0數(shù)據(jù)庫(kù)無(wú)法被遠(yuǎn)程連接問(wèn)題排查小結(jié)
- MySQL8.0無(wú)法遠(yuǎn)程連接訪問(wèn)的解決方法
- 解決阿里云ECS服務(wù)器下安裝MySQL無(wú)法遠(yuǎn)程連接的問(wèn)題
- MySQL數(shù)據(jù)庫(kù)無(wú)法遠(yuǎn)程連接的問(wèn)題詳細(xì)解決過(guò)程
相關(guān)文章
一個(gè)mysql死鎖場(chǎng)景實(shí)例分析
這篇文章主要給大家實(shí)例分析了一個(gè)mysql死鎖場(chǎng)景的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用mysql具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-05-05
從零開始學(xué)習(xí)SQL查詢語(yǔ)句執(zhí)行順序
sql語(yǔ)言中的查詢的執(zhí)行順序,以前不是很了解,最近查閱了相關(guān)資料,在sql語(yǔ)言中,第一個(gè)被處理的字句總是from字句,最后執(zhí)行的limit操作,現(xiàn)在小編來(lái)和大家一起學(xué)習(xí)一下2019-05-05
MySQL性能優(yōu)化的一些技巧幫助你的數(shù)據(jù)庫(kù)
你完成了你的品牌新的應(yīng)用程序,一切工作就像一個(gè)魅力;突然間,一個(gè)大爆發(fā)的用戶你的MySQL服務(wù)器,您的網(wǎng)站已關(guān)閉,是什么問(wèn)題導(dǎo)致的呢?以下是MySQL性能優(yōu)化的一些技巧,將幫助你,幫助你的數(shù)據(jù)庫(kù)2013-01-01
MySQL中on?duplicate?key?update的使用方法實(shí)例
在做數(shù)據(jù)統(tǒng)計(jì)的時(shí)候,我們經(jīng)常會(huì)用到mysql的on duplicate key update語(yǔ)法來(lái)自動(dòng)更新數(shù)據(jù),下面這篇文章主要給大家介紹了關(guān)于MySQL中on?duplicate?key?update的使用方法的相關(guān)資料,需要的朋友可以參考下2022-09-09
SQL實(shí)現(xiàn)LeetCode(177.第N高薪水)
這篇文章主要介紹了SQL實(shí)現(xiàn)LeetCode(177.第N高薪水),本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-08-08
mysql報(bào)錯(cuò):Deadlock found when trying to get lock; try restarti
這篇文章主要給大家介紹了關(guān)于mysql出現(xiàn)報(bào)錯(cuò):Deadlock found when trying to get lock; try restarting transaction的解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧。2017-07-07
JDBC連接mysql8和mysql5.7的注意事項(xiàng)
這篇文章主要介紹了JDBC連接mysql8和mysql5.7的注意事項(xiàng),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-09-09

