問題起因是這樣:在linux操作中的docker中部署了一個數(shù)據(jù)庫,數(shù)據(jù)庫啟動之后,端口也映射了(創(chuàng)建容器時用 -p 30036:3306進(jìn)行的映射),但是在外不想使用navicat連接時,怎么都連不上,本人遇到的問題如下
一、端口雖然映射了,但是服務(wù)器上的30036端口并未對外開放,因此要先開放端口,開放端口流程命令如下:
?要在CentOS上開放端口,可以按照以下步驟進(jìn)行操作:
-
確認(rèn)需要開放的端口號,例如80端口用于HTTP服務(wù),22端口用于SSH服務(wù)等。
-
打開防火墻,輸入以下命令:
systemctl start firewalld
-
開放端口,輸入以下命令:
firewall-cmd --zone=public --add-port=想要開放的端口號/tcp --permanent
其中,端口號為需要開放的端口號,例如80或22。
-
重新加載防火墻規(guī)則,輸入以下命令:
firewall-cmd --reload
-
確認(rèn)端口是否已經(jīng)開放,輸入以下命令:
firewall-cmd --list-ports
如果已經(jīng)成功開放端口,會顯示已開放的端口號。
? ? ? 注意:以上操作需要使用root權(quán)限進(jìn)行
? ? ? 這樣端口就開放了
二、數(shù)據(jù)庫的root用戶只能本地連接,外部無法連接
? ?解決方案如下:
先? use mysql;? 切換到mysql數(shù)據(jù)庫下
然后? SELECT user, host FROM mysql.user;? 查看root用戶可連接的ip
從這里可以發(fā)現(xiàn),只有本地localhost能連接,所以外部navicat肯定連不到,
找到了原因,只需要調(diào)整root用戶所有IP都可以連接到mysql數(shù)據(jù)庫就可以了
update user set host='%' where user='root' and host='localhost' limit 1;? ? 更新所有ip都可以連接
flush privileges;? ?更新完成就可以了
?文章來源地址http://www.zghlxwxcb.cn/news/detail-722087.html文章來源:http://www.zghlxwxcb.cn/news/detail-722087.html
?
到了這里,關(guān)于外部navicat無法連接mysql數(shù)據(jù)庫的問題原因及解決方案的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!