我已经在 stackoverflow 上寻找了很长一段时间,但我似乎找不到解决方案...这是我的情况:
- us-east-1b 中的 EC2 实例(运行 CentOS 6)
- us-east-1b 中的 RDS 实例(multi-az 已关闭)
- 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。
我开始认为这不再是安全组问题,而是我完全忘记了 EC2 实例上的操作系统/PHP 配置问题。
有什么想法吗?提前致谢!
最佳答案
我从另一个线程重新发布我的答案,因为你的答案是相关的:
您在 EC2 上运行什么?只是询问它是否是 SELinux(安全增强型 Linux),在这种情况下它可能是安全限制。
在您的终端,如果您运行:
getsebool -a | grep httpd
您应该能够看到此限制(您的网络服务器是否可以“联网”。如果不能,则运行此命令,这应该可以解决您的问题:
setsebool -P httpd_can_network_connect 1
希望能解决问题,否则我看不出问题出在哪里,尤其是因为您说您可以通过终端连接(所以 AWS 安全组不应该是问题所在)。
关于php - 使用PHP从EC2通过VPC连接到RDS实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22742453/