mysql8.0數(shù)據(jù)庫無法被遠程連接問題排查小結(jié)
步驟
1. 檢查MySQL服務(wù)的運行狀態(tài)
在Ubuntu服務(wù)器上,使用systemctl status mysql命令檢查MySQL是否正在運行。
如圖顯示正在運行:

2. 確認MySQL監(jiān)聽的IP地址和端口
使用sudo netstat -plnt | grep mysql來查看MySQL是否在監(jiān)聽所有網(wǎng)絡(luò)接口(0.0.0.0)或僅在監(jiān)聽本地環(huán)回接口(127.0.0.1)。如果只監(jiān)聽在127.0.0.1,那么你需要修改MySQL配置文件以便它能從其他接口接收連接。通常情況下,這個配置文件位于/etc/mysql/mysql.conf.d/mysqld.cnf,找到bind-address這一項并將其更改為0.0.0.0。然后重啟mysql服務(wù):sudo systemctl restart mysql。
如圖,需保證是0.0.0.0:

3. 確認防火墻設(shè)置
在Ubuntu服務(wù)器上運行sudo ufw status查看防火墻狀態(tài)。如果防火墻啟用了,并且沒有允許3306端口(默認的MySQL端口),則需要添加規(guī)則允許此端口。可以使用sudo ufw allow 3306命令來實現(xiàn)。
如圖,防火墻顯示為關(guān)閉狀態(tài),肯定不是防火墻阻止了3306端口:

4. 檢查MySQL用戶權(quán)限
確保root用戶有權(quán)限從非localhost登錄。你可以登錄MySQL然后使用這個SQL命令查看用戶權(quán)限:先登錄mysql -u root -p、然后切換到mysql數(shù)據(jù)庫use mysql;、查看SELECT User, Host FROM mysql.user;。如果root用戶的host字段是localhost,那么你需要更改權(quán)限讓root用戶可以從任何主機登錄。
如圖,root用戶的host字段是localhost,不符合要求:

我們改過來:
我們需要首先更改用戶的主機設(shè)置,然后再更新用戶的密碼。可以按照以下步驟操作:
創(chuàng)建一個允許從任何主機登錄的root用戶:
CREATE USER 'root'@'%' IDENTIFIED BY '123';
注意:上面因為密碼太簡單,是不允許的,要用復(fù)雜一點的密碼,如:
CREATE USER 'root'@'%' IDENTIFIED BY 'YourNewComplexPassword';
(我是用qing********123)
(20231024 但是我后面測了一下,是可以的,估計我先前配置了mysql_secure_installation,我后面直接用root用戶登錄是ok的,root用戶密碼123,十分簡單,估計后面容易被爆破。。。)
另外,想要更改密碼可以用:
ALTER USER 'root'@'%' IDENTIFIED BY 'YourNewComplexPassword';
授予新用戶所有權(quán)限:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';

刷新權(quán)限(不刷新好像也可以):
FLUSH PRIVILEGES;

查看查看用戶權(quán)限:
SELECT User, Host FROM mysql.user;

發(fā)現(xiàn)多了一個'root'@'%',這就是正常的。
在MySQL中,用戶的標識是由用戶名和主機名共同組成的,所以 ‘root'@'localhost' 和 'root'@'%' 是兩個不同的賬號。
'root'@'localhost' 表示只能從本地連接到MySQL。
'root'@'%' 表示可以從任何遠程主機連接到MySQL。
現(xiàn)在已經(jīng)成功創(chuàng)建了一個新的用戶 ‘root’@’%‘。這意味著root用戶現(xiàn)在可以從任何主機(包括您的Windows計算機)連接到MySQL服務(wù)器。
同時,‘root’@‘localhost’ 仍然存在,它只允許從Ubuntu服務(wù)器本地進行連接。這樣的配置通常是為了提高安全性,因為localhost通常用于系統(tǒng)內(nèi)部操作,例如維護任務(wù)和備份。
如果想要刪除 ‘root’@‘localhost’ 這個用戶,可以使用 DROP USER 'root'@'localhost'; 命令,但在做這個操作之前,請確保 ‘root’@’%’ 可以正常工作,并且不需要 ‘root’@‘localhost’ 這個用戶。
注意:允許root用戶從任何主機進行遠程登錄可能帶來安全風險,所以在生產(chǎn)環(huán)境中,我們通常會創(chuàng)建一個具有必要權(quán)限的新用戶用于遠程訪問。
5. 在Windows電腦上測試網(wǎng)絡(luò)連通性
在你的Windows電腦上,使用ping 192.168.200.212命令確認你的電腦能夠到達Ubuntu服務(wù)器(改成你自己mysql所在主機ip)。然后,你可以使用telnet或者類似的工具來檢查是否能夠連接到服務(wù)器的MySQL端口,比如 telnet 192.168.200.212 3306。
正常會顯示:

6. 檢查Datagrip配置
確保你的Datagrip中數(shù)據(jù)庫連接配置正確。包括IP地址、端口、用戶名和密碼。
通過以上步驟,應(yīng)該能夠找出問題所在并解決它。如果還有問題,可能需要查看更詳細的日志信息,比如MySQL的錯誤日志,通常位于/var/log/mysql/error.log。
以上所有步驟都檢查并正確設(shè)置后,應(yīng)該就能遠程訪問了
我用datagrip,點擊Test Connection,顯示連接成功了:

到此這篇關(guān)于mysql8.0數(shù)據(jù)庫無法被遠程連接問題排查小結(jié)的文章就介紹到這了,更多相關(guān)mysql8.0無法被遠程連接內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用MySQL的Binlog進行數(shù)據(jù)回滾的完整流程
本文描述了使用MySQL的binlog進行數(shù)據(jù)回滾的過程,從確認是否啟用Binlog日志到找到誤操作的記錄,再到編寫腳本解析記錄,最后執(zhí)行SQL語句實現(xiàn)回滾,需要的朋友可以參考下2025-12-12
MySQL用作備份還原的導(dǎo)入和導(dǎo)出命令用法整理
這篇文章主要介紹了MySQL用作備份還原的導(dǎo)入和導(dǎo)出命令用法整理,包括mysqldump的命令的使用以及l(fā)oad data相關(guān)命令,需要的朋友可以參考下2015-12-12
mysql創(chuàng)建用戶以及給用戶授予權(quán)限實現(xiàn)方式
文章講解了MySQL用戶創(chuàng)建與授權(quán)方法,包括設(shè)置空密碼、分配特定數(shù)據(jù)庫表權(quán)限及全部權(quán)限,強調(diào)安全授權(quán)的重要性,并提及回收和修改權(quán)限的命令2025-07-07
MYSQL必知必會讀書筆記第三章之顯示數(shù)據(jù)庫
MySQL是一種開放源代碼的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)(RDBMS),MySQL數(shù)據(jù)庫系統(tǒng)使用最常用的數(shù)據(jù)庫管理語言--結(jié)構(gòu)化查詢語言(SQL)進行數(shù)據(jù)庫管理。接下來通過本文給大家介紹MYSQL必知必會讀書筆記第三章之顯示數(shù)據(jù)庫,感興趣的朋友參考下吧2016-05-05
MySQL?EXPLAIN中的key_len索引使用實戰(zhàn)解析
在MySQL執(zhí)行計劃中,key_len表示查詢實際使用索引的字節(jié)長度,今天通過本文給大家介紹MySQL?EXPLAIN中的key_len索引使用實戰(zhàn)解析,感興趣的朋友跟隨小編一起看看吧2025-11-11

