无法使用 Node.js 和 AWS EC2 访问 mysql 服务器

Posted

技术标签:

【中文标题】无法使用 Node.js 和 AWS EC2 访问 mysql 服务器【英文标题】:Can't reach mysql server with Node.js & AWS EC2 【发布时间】:2021-06-11 19:42:10 【问题描述】:

我没有使用 AWS RDS,只使用 AWS EC2。

我将数据上传到 AWS EC2 Ubuntu 20.04 上的 mysql 服务器的 3306 端口。

另外,在那个 ubuntu 上,我正在端口 3000 上运行我的 Node.js Web 服务器。

但是,Web 服务器无法访问 MySQL 服务器。 他们总是说

err :   Error: connect ECONNREFUSED 127.0.0.1:3306
    at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1107:14)

上图是我现在的入站规则。

我使用一些查询检查了我的数据是否在 MySQL 服务器中...

还有什么可以做的吗?

如果您需要有关我的设置或其他内容的更多信息,请告诉我。

【问题讨论】:

你有 ms mql 和 nodejs 在同一个 EC2 实例中运行? 如果您的 MySQL 与您的应用程序位于本地主机上,则安全组无关紧要。您可以使用mysql cli 连接到您的数据库吗? 是的,我在同一个 EC2 实例中同时运行 mql 和 nodejs。 【参考方案1】:

也许以下步骤可以帮助您解决此问题:

确保它首先在 MySQL docker 容器上本地运行:创建数据库名称,在 MySQL 中具有足够权限的用户,使用用户名、密码、URL、端口和其他选项连接到它。 记录这些步骤并在 ec2 上尝试完全相同的步骤,我看到您已经暴露了 3306 端口,这很好。顺便提一句。我会先尝试heroku with node,因为有更多关于 Heroku CL 和cleardb 的文档,这是 MySQL 的插件,它是免费的 :) 顺便说一句。通常数据库应该放在私有子网中,并且只能通过 nat-i​​nstance / nat-gateway 允许访问,因此只允许来自公共子网的请求,但数据库仍然可以通过 nat 下载补丁,只是为了保持牢记最佳实践;)

【讨论】:

以上是关于无法使用 Node.js 和 AWS EC2 访问 mysql 服务器的主要内容,如果未能解决你的问题,请参考以下文章

如何在 AWS Lambda 中使用 Node.js 列出我的所有 Amazon EC2 实例?

AWS 弹性 beanstalk ec2 服务器上的 node.js 命令

AWS EC2 与 AWS API Gateway 上的 Node.js RESTful API 服务器

创建 AWS SQS 队列

从 Amazon AWS EC2 服务器上的 Node.js 连接到 Redis 服务器时出错

如何将 S3 用作静态网页和 EC2 作为 REST API 一起使用? (AWS)