Navicat連接linux虛擬機(jī)上的MySQL可能遇到的問題及排查方法
為什么寫這篇文章
很大一部分原因是因?yàn)榫W(wǎng)上找不到比內(nèi)容較全的文章作為一個(gè)小白解決所面臨的問題
關(guān)于Navicat連接Linux上的MySQL為什么出現(xiàn)以下報(bào)錯
問題描述
這個(gè)報(bào)錯很有可能是你的linux的防火墻不允許你連接到MySQL服務(wù)器導(dǎo)致的具體怎么排查,后面會詳細(xì)說明。
這個(gè)報(bào)錯有可能是以下原因
1、MySQL 服務(wù)器沒有在你指定的 IP 地址 ‘192.168.111.128’ 上運(yùn)行。
2、MySQL 服務(wù)器正在運(yùn)行,但防火墻或網(wǎng)絡(luò)設(shè)置阻止了你的連接請求。
3、在 Navicat 中提供的 MySQL 用戶名、密碼或端口號不正確。
請注意:這里的(using password:YES)指的是你是否填寫了密碼而不是你的密碼是正確的,即使你填寫了錯誤的密碼,他還是會報(bào)這個(gè)錯誤。
如何排查問題出在哪:
對于圖一,首先我們可以嘗試Windows上通過命令行是否能夠ping通linux的ip地址
如果沒有ping通先考慮自己是否選對了linux的ip地址,查看linux的ip地址可以打開終端輸入ifconfig或者使用ip addr show查看,一般是eth33或者eth0,一定要選對ip地址,不要以為第一個(gè)就是ip地址,因?yàn)橛行┩瑢W(xué)可能在linux上安裝了doker環(huán)境等導(dǎo)致第一個(gè)并不是Linux的ip地址。
同時(shí)需要注意的是,對于虛擬機(jī)centos7版本linux的網(wǎng)卡有兩種
這兩種會對應(yīng)兩種不同的ip地址
如果你的虛擬機(jī)需要連接到Internet,你可能會使用VMnet8(通常配置為NAT模式)。而VMnet1通常用于虛擬機(jī)之間的僅主機(jī)通信。
值得提一嘴的是,我一開始一直以為是本機(jī)IP與Linux的mysql進(jìn)行連接,直到我發(fā)現(xiàn)了圖二的報(bào)錯中root用戶對應(yīng)的host地址是192.168.44.1,而且如果你是連接的校園網(wǎng),那么你的ip地址很有可能是局域網(wǎng)ip而不是你的公網(wǎng)ip地址,所以我在配置mysql服務(wù)器用戶的時(shí)候一直使用的就是本機(jī)的ip地址,而不是根據(jù)報(bào)錯改的,因?yàn)閳D一報(bào)錯讓我查詢到了很多不相關(guān)的東西,不知道怎么排查錯誤亂改,導(dǎo)致明明很簡單的東西卻復(fù)雜化了。
所以說這就是為什么當(dāng)你試圖解決一個(gè)你不理解的問題時(shí),復(fù)雜化就產(chǎn)生了。QAQ
當(dāng)這兩個(gè)都沒有什么問題,你還是有圖一的報(bào)錯時(shí),你可以配置防火墻允許其他ip訪問你的mysql服務(wù)器端口(默認(rèn)是3306端口),即防火墻放開mysql端口(默認(rèn)為3306).
在Linux系統(tǒng)中,有兩種主要的防火墻工具,分別是iptables和firewalld。在較新的Linux發(fā)行版中,如CentOS 7及以上版本,默認(rèn)使用的是firewalld的防火墻,而不是iptables。
這里以firewalld為例子,iptables防火墻操作也是類似的這里不做詳細(xì)說明。
在firewalld防火墻上允許MySQL服務(wù)器的3306端口供外部訪問,你可以按照以下步驟進(jìn)行操作:
- 首先,確保你已經(jīng)登錄到Linux服務(wù)器上,并且具有管理員權(quán)限。
- 打開終端或命令行界面。
- 輸入以下命令以允許3306端口通過防火墻:
sudo firewall-cmd --zone=public --add-port=3306/tcp --permanent sudo firewall-cmd --reload
當(dāng)你的圖一報(bào)錯解決后出現(xiàn)了圖二的報(bào)錯,那么你可以先登錄你的mysql查看,在你使用登錄命令時(shí)可能會出先報(bào)錯,因?yàn)槟愕臋?quán)限不夠,如圖
可以使用su命令提高權(quán)限至超級管理員,或者在mysql -u “username”-p 命令前加sudo提高命令的權(quán)限來解決這個(gè)問題,“username”是選擇登錄的mysql用戶名。
登陸后可以使用如下語句查看你的mysql上的用戶名及主機(jī)(host)地址
SELECT user, host FROM mysql.user;
默認(rèn)應(yīng)該只有下面四個(gè),我的是添加了對應(yīng)虛擬機(jī)兩種不同狀態(tài)下的用戶及主機(jī)
如果只有下面四個(gè),那么你的mysql只能本地訪問,Navicat上根本找不到對應(yīng)的用戶
,就會報(bào)圖二的錯誤,其次就是輸錯了密碼或則用戶名也會報(bào)圖二錯誤。
那么應(yīng)該如何添加相關(guān)用戶,如果你的MySQL是8.0及以后的版本。
你可以使用命令create user創(chuàng)建用戶,然后使用alter user命令設(shè)置密碼,最后使用grang命令賦予權(quán)限
以圖二報(bào)錯的用戶名為root,ip地址為192.168.44.1為例
create user 'root'@'192.168.44.1'; ALTER USER 'root' @'192.168.44.1' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON *.* TO 'root' @'192.168.44.1'; FLUSH PRIVILEGES;
注意這里的password需要你自己輸入相關(guān)密碼,我這里就用password代替了。
根據(jù)圖二的報(bào)錯添加mysql的用戶來供windows訪問,就能解決問題了。
希望這篇文章能對你有所幫助,確實(shí)寫文章很花時(shí)間,這也應(yīng)該是很多人為什么遇到問題花了很長時(shí)間解決,不會把經(jīng)驗(yàn)分享出來的一個(gè)原因。
到此這篇關(guān)于Navicat連接linux虛擬機(jī)上的MySQL可能遇到的問題以及如何排查的文章就介紹到這了,更多相關(guān)Navicat 連接MySQL問題內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MYSQL5.6.33數(shù)據(jù)庫主從(Master/Slave)同步安裝與配置詳解(Master-Linux Slave-w
這篇文章主要為大家詳細(xì)介紹了MYSQL5.6.33數(shù)據(jù)庫主從(Master/Slave)同步安裝與配置,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06mysql創(chuàng)建表設(shè)置表主鍵id從1開始自增的解決方案
在MySQL中用很多類型的自增ID,每個(gè)自增ID都設(shè)置了初始值,一般情況下初始值都是從0開始,然后按照一定的步長增加(一般是自增 1),下面這篇文章主要給大家介紹了關(guān)于mysql創(chuàng)建表設(shè)置表主鍵id從1開始自增的解決方案,需要的朋友可以參考下2023-04-04mysql 5.7.13 winx64安裝配置方法圖文教程(win10)
這篇文章主要為大家分享了mysql 5.7.13 winx64安裝配置方法圖文教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-01-01Mysql數(shù)據(jù)庫delete操作沒報(bào)錯卻刪除不了數(shù)據(jù)的解決
本文主要介紹了Mysql數(shù)據(jù)庫delete操作沒報(bào)錯卻刪除不了數(shù)據(jù)的解決,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-01-01MySQL自動填充create_time和update_time的兩種方式
當(dāng)我們創(chuàng)建業(yè)務(wù)表的時(shí)候 通常都需要設(shè)置create_time 和 update_time,下面這篇文章主要給大家介紹了關(guān)于MySQL自動填充createTime和updateTime的兩種方式,需要的朋友可以參考下2022-05-05