我一直在寻找stackoverflow很长一段时间,但我似乎无法找到解决方案......这就是我的情况:
us2-east-1b中的EC2实例(运行CentOS 6)
us-east-1b中的RDS实例(多重关闭)
EC2和RDS实例都在同一个VPC中
EC2和RDS实例都使用相同的安全组
我可以通过终端从EC2登录RDS
我的安全组设置允许使用TCP端口3306(MySQL)的任何入站IP地址
这是一个很长的镜头,但我也在EC2上禁用了SELINUX
现在这是我的问题:
我似乎无法弄清楚如何通过简单的PHP脚本从EC2连接到RDS.每当我尝试连接时,我都会收到错误代码13.由于EC2可以通过终端连接,我猜这是因为它位于同一个子网中; 但是,当我尝试通过PHP连接时(我假设此时它正在尝试连接EIP地址)我收到错误.
奇怪的是我可以通过Sequel Pro(Mac相当于Navicat或phpMyAdmin)连接到RDS,但不能通过EC2连接到RDS.
我开始认为它不再是安全组问题,而是我的EC2实例上的OS/PHP配置完全让我不知所措.
有什么想法吗?提前致谢!
我从另一个帖子中重新发布我的答案,因为你的答案是相关的:
你在EC2上运行的是什么?只是询问它是否是SELinux(安全增强型Linux),在这种情况下它可能是安全限制.
在您的终端,如果您运行:
getsebool -a | grep httpd
你应该能够看到这个限制(你的网络服务器是否可以"网络".如果不能,那么运行这个,这应该可以解决你的问题:
setsebool -P httpd_can_network_connect 1
希望解决它,否则我不知道问题出在哪里,特别是因为你说你可以通过终端连接(所以AWS安全组不应该是问题).