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