mysql8.0數(shù)據(jù)庫無法被遠(yuǎn)程連接問題排查小結(jié)
步驟
1. 檢查MySQL服務(wù)的運(yùn)行狀態(tài)
在Ubuntu服務(wù)器上,使用systemctl status mysql
命令檢查MySQL是否正在運(yùn)行。
如圖顯示正在運(yùn)行:
2. 確認(rèn)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
這一項(xiàng)并將其更改為0.0.0.0
。然后重啟mysql服務(wù):sudo systemctl restart mysql
。
如圖,需保證是0.0.0.0
:
3. 確認(rèn)防火墻設(shè)置
在Ubuntu服務(wù)器上運(yùn)行sudo ufw status
查看防火墻狀態(tài)。如果防火墻啟用了,并且沒有允許3306端口(默認(rèn)的MySQL端口),則需要添加規(guī)則允許此端口??梢允褂?code>sudo ufw allow 3306命令來實(shí)現(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用戶可以從任何主機(jī)登錄。
如圖,root用戶的host字段是localhost,不符合要求:
我們改過來:
我們需要首先更改用戶的主機(jī)設(shè)置,然后再更新用戶的密碼??梢园凑找韵虏襟E操作:
創(chuàng)建一個允許從任何主機(jī)登錄的root用戶:
CREATE USER 'root'@'%' IDENTIFIED BY '123';
注意:上面因?yàn)槊艽a太簡單,是不允許的,要用復(fù)雜一點(diǎn)的密碼,如:
CREATE USER 'root'@'%' IDENTIFIED BY 'YourNewComplexPassword';
(我是用qing********123)
(20231024 但是我后面測了一下,是可以的,估計(jì)我先前配置了mysql_secure_installation,我后面直接用root用戶登錄是ok的,root用戶密碼123,十分簡單,估計(jì)后面容易被爆破。。。)
另外,想要更改密碼可以用:
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中,用戶的標(biāo)識是由用戶名和主機(jī)名共同組成的,所以 ‘root'@'localhost' 和 'root'@'%' 是兩個不同的賬號。
'root'@'localhost' 表示只能從本地連接到MySQL。
'root'@'%' 表示可以從任何遠(yuǎn)程主機(jī)連接到MySQL。
現(xiàn)在已經(jīng)成功創(chuàng)建了一個新的用戶 ‘root’@’%‘。這意味著root用戶現(xiàn)在可以從任何主機(jī)(包括您的Windows計(jì)算機(jī))連接到MySQL服務(wù)器。
同時,‘root’@‘localhost’ 仍然存在,它只允許從Ubuntu服務(wù)器本地進(jìn)行連接。這樣的配置通常是為了提高安全性,因?yàn)閘ocalhost通常用于系統(tǒng)內(nèi)部操作,例如維護(hù)任務(wù)和備份。
如果想要刪除 ‘root’@‘localhost’ 這個用戶,可以使用 DROP USER 'root'@'localhost'; 命令,但在做這個操作之前,請確保 ‘root’@’%’ 可以正常工作,并且不需要 ‘root’@‘localhost’ 這個用戶。
注意:允許root用戶從任何主機(jī)進(jìn)行遠(yuǎn)程登錄可能帶來安全風(fēng)險(xiǎn),所以在生產(chǎn)環(huán)境中,我們通常會創(chuàng)建一個具有必要權(quán)限的新用戶用于遠(yuǎn)程訪問。
5. 在Windows電腦上測試網(wǎng)絡(luò)連通性
在你的Windows電腦上,使用ping 192.168.200.212
命令確認(rèn)你的電腦能夠到達(dá)Ubuntu服務(wù)器(改成你自己mysql所在主機(jī)ip)。然后,你可以使用telnet或者類似的工具來檢查是否能夠連接到服務(wù)器的MySQL端口,比如 telnet 192.168.200.212 3306
。
正常會顯示:
6. 檢查Datagrip配置
確保你的Datagrip中數(shù)據(jù)庫連接配置正確。包括IP地址、端口、用戶名和密碼。
通過以上步驟,應(yīng)該能夠找出問題所在并解決它。如果還有問題,可能需要查看更詳細(xì)的日志信息,比如MySQL的錯誤日志,通常位于/var/log/mysql/error.log
。
以上所有步驟都檢查并正確設(shè)置后,應(yīng)該就能遠(yuǎn)程訪問了
我用datagrip,點(diǎn)擊Test Connection
,顯示連接成功了:
到此這篇關(guān)于mysql8.0數(shù)據(jù)庫無法被遠(yuǎn)程連接問題排查小結(jié)的文章就介紹到這了,更多相關(guān)mysql8.0無法被遠(yuǎn)程連接內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
CentOS 7中升級MySQL 5.7.23的坑與解決方法
我們在安裝升級的時候會遇到一些問題,不過可能每個人遇到的問題不一樣,多找找才能解決問題喲,下面這篇文章主要給大家介紹了關(guān)于在CentOS 7中升級MySQL 5.7.23遇到的一個坑與解決方法,需要的朋友可以參考下2018-10-10最新版MySQL 8.0.22下載安裝超詳細(xì)教程(Windows 64位)
這篇文章主要介紹了最新版MySQL 8.0.22下載安裝超詳細(xì)教程(Windows 64位),本文通過圖文實(shí)例相結(jié)合給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-12-12