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

标签 mysql linux amazon-ec2 docker

在我的 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"

我已将端口 803306 暴露给主机的网络接口(interface),并且还允许 AWS 的安全组允许到这些端口的入站连接。安全组中的连接类型是:MYSQL/Aurora,协议(protocol)是:TCP(我知道它不是很安全,它只用于初始实现。生产设置会有所不同)

我遵循了这个 DigitalOcean 教程:https://www.digitalocean.com/community/tutorials/how-to-install-linux-nginx-mysql-php-lemp-stack-on-ubuntu-14-04

安装并启动 Nginx 后,我可以通过 ec2 的公共(public) 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 数据库,但不是来自容器外部。

同样来 self 的本地机器: 我尝试使用 mysql-client: mysql -h xxx.xxx.xxx.xxx -u root -p

我收到以下错误:ERROR 2003 (HY000): 无法连接到 'xxx.xxx.xxx.xxx' (111) 上的 MySQL 服务器

也通过 mysql workbench,但我仍然无法连接到 mysql 数据库。

我做错了什么?

最佳答案

在你的主机 mysql 的 my.cnf 中将绑定(bind)地址设置为 0.0.0.0 以便 mysql 监听所有网络接口(interface)

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

关于mysql - 无法远程连接到 dockerized mysql 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35580488/

相关文章:

php - 如何为多个表单创建提交按钮

c++ - 将导出的符号保留在共享库中

linux - 使用 bash 脚本从 Linux 中的文本获取一些报告

php - 启用/安装 GD 扩展? --without-gd

linux - AWS 是否在 SSH 连接中保存客户端的 IP?

php - 图片上传/接收API

javascript - .js + sql变量无法求和

mysql - 在数据库中存储杂项数据

linux - Python shebang 线与 Python3

amazon-web-services - AWS 预留实例大小灵活性和限制