我们在DigitalOcean上部署了NodeJS Web服务,并连接到Amazon RDS上的MySQL数据库。我可以使用Navicat Premium远程访问MySQL RDS,也可以使用NodeJS localhost(这意味着我在localhost上的应用程序可以连接到RDS数据库)
但是当我将我的应用程序部署到DigitalOcean服务器时。它无法连接到MySQL RDS。连接已超时。
我使用命令查看开放端口:
iptables -L
结果是:
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- anywhere anywhere tcp dpt:3000
ACCEPT tcp -- anywhere anywhere tcp dpt:mysql
ACCEPT tcp -- anywhere anywhere tcp dpt:3000
ACCEPT tcp -- anywhere anywhere tcp dpt:mysql
ACCEPT tcp -- anywhere anywhere tcp dpt:mysql
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- anywhere anywhere tcp dpt:mysql
我看到输出和输入也为端口3306打开了。但是NodeJ仍然无法连接。问题是DigitalOcean Droplet没有打开端口3306,NodeJS应用程序无法通过此端口连接到外部。
(P / S:亚马逊RDS还打开了IP的所有端口和任何地方)
请帮助我,谢谢
答案 0 :(得分:3)
设置Amazon RDS后,它只允许来自我的IP地址的连接。
要解决此问题,请转到安全组设置,并允许从任何地方或仅与相关的NodeJS服务器连接到RDS。