无法使用 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-instance / 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 服务器