MySQL遠程無法連接的一些常見原因總結(jié)
前言
MySQL是目前非常流行的數(shù)據(jù)庫之一,也是中小企業(yè)持久化存儲的首選數(shù)據(jù)庫。
不同于我們?nèi)粘W習,在實際應用中,MySQL服務都會掛載在某臺服務器上。如果MySQL部署在某臺云服務器上,這樣一來,操縱數(shù)據(jù)庫每次都需要先連接服務器,再進入數(shù)據(jù)庫操作,不是很方便。
于是,學習遠程連接 MySQL 的方法是數(shù)據(jù)庫在服務器上時的必修課。下面我將講述遠程連接報錯的常見三種原因。
原因1:
MySQL的遠程訪問權(quán)限未開放
如果最常見的無法遠程連接問題,因為沒開啟遠程訪問權(quán)限導致的。
解決方案:
進入MySQL中,通過下述命令可以查看遠程訪問權(quán)限等,創(chuàng)建用戶的遠程訪問權(quán)限并刷新指令即可,別忘記每次修改命令都要刷新指令哦。
常見命令如下:
# 查看當前遠程連接的權(quán)限 select User,authentication_string,Host from user; # 創(chuàng)建用戶遠程訪問權(quán)限 create user root@'%' identified by '123456'; # 允許指定主機(IP地址)訪問權(quán)限 grant all privileges on test.* to '用戶名'@'ip地址' identified by '密碼'; # 無法創(chuàng)建請刪除重新試一遍 drop user root@'ip地址'; # 賦予用戶操作的全部權(quán)限 grant all privileges on *.* to root@'%'; # 刷新指令 flush privileges;
原因2:
服務器開啟了防火墻,導致MySQL的訪問端口無法使用
如果服務器開啟了防火墻,并且未設置MySQL端口開放策略,那么你將無法通過對應的端口遠程訪問MySQL。
解決方案:
關(guān)閉防火墻,或者開放對應的MySQL端口即可,比如默認的MySQL端口是3306,開放他就行。
常見命令如下:
# 查看防火墻狀態(tài) firewall-cmd --state # 啟動防火墻 systemctl start firewalld.service # 關(guān)閉防火墻 systemctl stop firewalld.service # 設置開機自啟動 systemctl enable firewalld.service # 開放防火墻端口 firewall-cmd --zone=public --add-port=3306/tcp --permanent # 重新加載配置 firewall-cmd --reload # 查看開放的防火墻端口 firewall-cmd --zone=public --list-ports
原因3:
docker鏈被清除,導致MySQL無法訪問
如果你的MySQL是部署在docker容器中的,并且在部署完成后開啟設置了防火墻。這個時候就可能導致docker的鏈被清除,即使你開啟了遠程訪問權(quán)限,也只能通過進入容器訪問MySQL,遠程無法訪問。
解決方案:
重新啟動docker,可以恢復docker鏈。
# 重啟docker systemctl restart docker
總結(jié)
到此這篇關(guān)于MySQL遠程無法連接的一些常見原因的文章就介紹到這了,更多相關(guān)MySQL遠程無法連接原因內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SQL中current_date()函數(shù)的實現(xiàn)
日期時間類型的數(shù)據(jù)也是經(jīng)常要用到的,SQL中也提供了一些函數(shù)對這些數(shù)據(jù)進行處理,本文主要介紹了SQL中current_date()函數(shù)的實現(xiàn),具有一定的參考價值2024-02-02Mysql如何按照范圍區(qū)間創(chuàng)建分區(qū)表
在Mysql的范圍分區(qū)表定義中,分區(qū)范圍需要連續(xù)并且不會有覆蓋,定義范圍分區(qū)表時,使用VALUES LESS THAN操作符,這篇文章主要介紹了Mysql如何按照范圍區(qū)間創(chuàng)建分區(qū)表,需要的朋友可以參考下2024-08-08