[英]Unable to connect to dockerized mysql db remotely
在我的AWS ec2
服務器上,我安裝了docker 1.9.1
。 在基於ubuntu:trusty
官方docker映像的映像test_image
,我嘗試設置LEMP(Linux,Nginx,MySQL,PHP)體系結構。
以下是我用來啟動容器的docker命令:
docker run --name test_1 -d -p 80:80 -p 3306:3306 test_image /bin/sh -c "while true; do echo daemonized docker container; sleep 5000; done"
我已經將端口80
和3306
暴露給主機的網絡接口,並且還允許AWS的安全組允許到這些端口的入站連接。 安全組中的連接類型是: MYSQL/Aurora
,協議是: TCP
(我知道它不是很安全,僅用於初始實現。生產設置將有所不同)
我遵循了這個DigitalOcean教程: https ://www.digitalocean.com/community/tutorials/how-to-install-linux-nginx-mysql-php-lemp-stack-on-ubuntu-14-04
安裝Nginx並啟動它之后,我可以通過ec2的公共IP在瀏覽器中對其進行測試,即http://xxx.xxx.xxx.xxx顯示了默認的Nginx歡迎頁面。
在安裝MySQL時,我在docker容器中遵循以下命令:
apt-get install mysql-server
mysql_install_db
/etc/init.d/mysql start
mysql_secure_installation
我已經為root
用戶提供了密碼,並且在mysql_secure_installation
期間,我允許遠程訪問root用戶。
從容器內部的mysql -u root -p
命令將我連接到mysql db,但不是從容器外部。
同樣從我的本地機器上:我嘗試使用mysql-client: mysql -h xxx.xxx.xxx.xxx -u root -p
我收到以下錯誤: ERROR 2003 (HY000): Can't connect to MySQL server on 'xxx.xxx.xxx.xxx' (111)
並通過mysql工作台,但我仍然無法連接到mysql數據庫。
我究竟做錯了什么?
在主機中,mysql的my.cnf將綁定地址設置為0.0.0.0,以便mysql在所有網絡接口上進行偵聽
bind-address = 0.0.0.0
默認配置為:
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
#bind-address = 127.0.0.1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.