記一次docker中的mysql不能遠程訪問的處理

環境:

centos8.0
docker19.03.7
docker-compose1.25.5
mysql5.7
端口映射 13306:3306
防火牆 firewall

現象:

mysql運行在docker容器


不能遠程訪問docker中的mysql

關閉防火牆(sudo systemctl stop firewalld)後,就能遠程訪問,打開防火牆(sudo systemctl start firewalld),mysql就又不能遠程訪問。第一感覺,應該是端口沒有開放,但docker中的mysql使用端口13306,該端口已在防火牆開放
firewall-cmd --permanent --zone=public --add-port=13306/tcp

firewall-cmd —reload

通過Navicat遠程連接仍然失敗,查了無數博客,結合自己理解,需先關閉防火牆,重啓docker(-compose)鏡像,然後再打開防火牆,於是乎

sudo systemctl stop firewalld

docker-compose restart

報錯,如下圖:

報錯原因及解釋,參考https://blog.csdn.net/whatday/article/details/86762264

完整的步驟:
sudo systemctl stop firewalld

sudo systemctl restart docker

docker-compose restart(已關閉的,直接用start命令)

sudo systemctl start firewalld

這樣防火牆firewalld開啓狀態下,mysql也能遠程訪問了

 

另外我一個習慣:

我一般不直接用docker命令啓動鏡像,都是通過docker-compose.yml這種方式,這種方式將各個參數都放到配置文件裏,維護比較方便

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章