无法远程连接到dockerized mysql数据库

时间:2016-02-23 14:43:30

标签: mysql linux amazon-ec2 docker

AWS ec2服务器上安装了docker 1.9.1。 在基于test_image官方docker镜像的图像ubuntu:trusty中,我尝试设置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"

我已将端口803306暴露给主机的网络接口,并且还允许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数据库,但不是从容器外部连接。

同样来自我的本地机器: 我尝试使用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 workbench但我仍然无法连接到mysql db。

我做错了什么?

1 个答案:

答案 0 :(得分:1)

在您的主机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