在本地的Navicat連接服務(wù)器上的數(shù)據(jù)庫(kù)時(shí),出現(xiàn)如下錯(cuò)誤:
遇到問(wèn)題要學(xué)會(huì)拆解澜躺、分析蝉稳,從不同的角度考慮問(wèn)題,慢慢縮小問(wèn)題范圍掘鄙,最終發(fā)現(xiàn)并解決問(wèn)題耘戚;
一個(gè)遠(yuǎn)程的服務(wù)連接不上,一般的操漠,考慮:
1收津、本地和遠(yuǎn)程是否互通
2、權(quán)限是否有問(wèn)題
而我們的報(bào)錯(cuò)中并沒(méi)有提到權(quán)限相關(guān)問(wèn)題颅夺;
1朋截、解決網(wǎng)絡(luò)互通問(wèn)題
這里,先分析第一種可能:
1.1吧黄、使用ping
命令
- 如果ping不通部服,參考官方文檔:
安全相關(guān):檢查ECS安全組、云防火墻拗慨、安全管控狀態(tài)廓八。
安全組相關(guān)問(wèn)題:具體操作請(qǐng)參見(jiàn)刪除ECS實(shí)例的默認(rèn)安全組規(guī)則導(dǎo)致無(wú)法ping通ECS實(shí)例。
云防火墻相關(guān)問(wèn)題:請(qǐng)登錄云防火墻控制臺(tái)赵抢,在訪(fǎng)問(wèn)控制中剧蹂,檢查是否存在由外對(duì)內(nèi)的拒絕規(guī)則,禁止了端口的訪(fǎng)問(wèn)和ICMP協(xié)議烦却。
安全管控相關(guān)問(wèn)題:具體操作請(qǐng)參見(jiàn)添加安全組規(guī)則宠叼,添加對(duì)安全組ICMP協(xié)議的入方向的安全策略。
1.2其爵、使用telnet
命令
(win11的telnet
命令在”可選功能“中打開(kāi)冒冬,參照文章末尾)
如果ping
沒(méi)問(wèn)題,但telnet
失敗摩渺,顯示 ”在端口xxx連接失敗“
就表示端口未放行简烤。
如果出現(xiàn)端口未放行,怎么辦摇幻?需要排查兩種情況横侦。
1.查看阿里云服務(wù)器控制臺(tái)是否設(shè)置了安全組規(guī)則。這個(gè)需要阿里云賬號(hào)登錄到阿里云绰姻,進(jìn)入服務(wù)器控制臺(tái)設(shè)置安全組規(guī)則枉侧。 具體教程:阿里云服務(wù)器如何設(shè)置安全組規(guī)則圖文教程
也可以參考文章:https://blog.csdn.net/qq_42992704/article/details/1046964322.查看云服務(wù)器Linux系統(tǒng)是否設(shè)置了防火墻規(guī)則。查看防火墻是否關(guān)閉了端口狂芋。這個(gè)需要ssh遠(yuǎn)程連接你的linux服務(wù)器來(lái)查看和設(shè)置防火墻規(guī)則棵逊。具體教程,瀏覽本文
1银酗,查看防火墻狀態(tài)
systemctl status firewalld.service
2辆影,開(kāi)啟防火墻
systemctl start firewalld.service
3,關(guān)閉防火墻
systemctl stop firewalld.service
4黍特,禁用防火墻
systemctl disable firewalld.service
5蛙讥,查看防火墻已開(kāi)放端口列表
firewall-cmd --list-all
案例:
[root@localhost ~]# firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: ens33
sources:
services: dhcpv6-client ssh
ports: 3306/tcp //已經(jīng)開(kāi)放的端口會(huì)在這里顯示。沒(méi)有顯示的端口灭衷,是訪(fǎng)問(wèn)不了的次慢。
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
6,防火墻添加端口
[root@localhost ~]# firewall-cmd --permanent --add-port=3306/tcp
success
[root@localhost ~]# firewall-cmd --reload
success
[root@localhost ~]# firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: ens33
sources:
services: dhcpv6-client ssh
ports: 8080/tcp 3306/tcp
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
7翔曲,防火墻關(guān)閉端口
[root@localhost ~]# firewall-cmd --permanent --remove-port 3306/tcp
success
[root@localhost ~]# firewall-cmd --reload
success
[root@localhost ~]# firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: ens33
sources:
services: dhcpv6-client ssh
ports: 8080/tcp
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
來(lái)自:https://zhuanlan.zhihu.com/p/344784016
2迫像、解決MySQL遠(yuǎn)程連接的授權(quán)問(wèn)題
2.1、第一種方法
- 一般需要改下服務(wù)器上mysql的權(quán)限瞳遍,首先登錄服務(wù)器上的mysql闻妓,
%
:表示可以任何主機(jī)都能連接到mysql服務(wù)器
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '這里寫(xiě)自己數(shù)據(jù)庫(kù)的密碼' WITH GRANT OPTION;
- 或者也可以把
%
換成自己本地的IP地址,如:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.x.x' IDENTIFIED BY '這里寫(xiě)自己數(shù)據(jù)庫(kù)的密碼' WITH GRANT OPTION;
- 最后刷新權(quán)限使其生效
FLUSH PRIVILEGES;
2.2掠械、 第二種方法
- 此時(shí)的MySQL配置不支持遠(yuǎn)程連接由缆,登錄服務(wù)器的mysql后,查看root用戶(hù)下的 host
use mysql;
select host from user where user='root';
- 可以看到root用戶(hù)下只有
localhost
本地支持連接 - 將
localhost
設(shè)置為通配符%
猾蒂,就可以允許遠(yuǎn)程連接了
update user set host = '%' where user ='root';
localhost 指的是用戶(hù)開(kāi)放的IP均唉,可以是localhost(僅本機(jī)訪(fǎng)問(wèn),相當(dāng)于127.0.0.1)肚菠,可以是具體的某一IP舔箭,也可以是 ‘%’ (所有IP均可訪(fǎng)問(wèn))
- 查看更改后的變化
select host, user from user;
- 最后刷新權(quán)限即可
FLUSH PRIVILEGES;
來(lái)自:https://developer.aliyun.com/article/872622