DigitalOcean 上的 NodeJs 无法连接到 Amazon RDS 上的 MySQL 数据库

NodeJs on DigitalOcean cannot connect to MySQL database on Amazon RDS

我们在 DigitalOcean 上部署了 NodeJS Web 服务并连接到 Amazon RDS 上的 MySQL 数据库。我可以使用 Navicat Premium 远程连接到 MySQL RDS,也可以在 NodeJS 本地主机上正常工作(这意味着我在本地主机上的应用程序可以连接到 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 打开。但是 NodeJs 仍然无法连接。问题是 DigitalOcean droplet 没有打开 3306 端口,NodeJS 应用程序无法通过这个端口连接到外部。

(P/S: Amazon RDS 也为 IP 打开了所有端口和任何地方)

请帮助我,谢谢

设置 Amazon RDS 后,它只允许来自我的 IP 地址的连接。

要解决此问题,请转到“安全组”设置并允许从任何地方或仅从有问题的 NodeJS 服务器连接到 RDS。