在我的AWS ec2服务器上,我已安装docker 1.9.1。在基于ubuntu:trusty官方docker镜像的图像test_image中,我尝试设置LEMP(Linux,Nginx,MySQL,PHP)架构。
以下是我使用的docker命令来启动容器:
我已经将端口
我按照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容器中遵循以下命令:
以下是我使用的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数据库,但无法从容器外部连接。
也尝试了从本地机器使用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数据库。
我做错了什么?
ERROR 1130 (HY000): Host 'yyy.yyy.yyy.yyy' is not allowed to connect to this MySQL server.
'yyy.yyy.yyy.yyy' 是我的本地公共IP地址。而在ec2主机上,现在是:ERROR 1130 (HY000): Host 'ip-zzz-zzz-zzz-zzz.ec2.internal' is not allowed to connect to this MySQL server
。 - Surender ThakranGRANT ALL PRIVILEGES ON database.* TO 'user'@'yourremotehost' IDENTIFIED BY 'newpassword';
这篇文章也很有帮助:SO - molivier@remoteIP
的用户。要允许所有远程IP的root用户,请使用以下命令:GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password';
- molivier