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

标签 mysql node.js amazon-rds digital-ocean

我们在 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/

相关文章:

PHP/MySQL 自动更新客户端

node.js - 在 AWS Lambda 中创建 RESTful 服务

mysql - 如何将 Amazon RDS mysql.slow_log 表引擎更改为 innodb

aws-cloudformation - CloudFormation AWS::RDS::DBInstance 错误 "Specifying IOPs is not allowed for this engine"

php - 从 cakephp 中的两级父模型中选择字段

php - 瑞典字母 MySQL 和 LAMP 的问题

node.js - WebSockets 加上 RESTful 接口(interface),如何在 Node.js 中编写 DRY 代码?

javascript - 从 JSON Node js 读取键值

java - 无法通过 Hibernate 或 sqlplus 连接到 Amazon RDS DBInstance

mysql - 具有 MySQL 连接的 Shiny 动态 + 过滤数据框/表输出