我们在 DigitalOcean 上部署了 NodeJS 网络服务,并连接到 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 后,它只允许来 self 的 IP 地址的连接。
要解决此问题,请转到安全组设置并允许从任何地方或仅从有问题的 NodeJS 服务器连接到 RDS。
关于mysql - DigitalOcean 上的 NodeJs 无法连接到 Amazon RDS 上的 MySQL 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29719049/