无法连接到 Nodejs EC2 服务器上的 SQL Server 数据库
Posted
技术标签:
【中文标题】无法连接到 Nodejs EC2 服务器上的 SQL Server 数据库【英文标题】:Cannot connect to SQL Server database on Nodejs EC2 server 【发布时间】:2022-01-14 16:02:04 【问题描述】:我有一个运行节点服务器的 EC2 实例。页面和路由在前端渲染得很好,但是当我做任何需要调用 api 的事情时,它说无法连接到 XX.XX.X.XXX:1433(这是我的 SQL Server 数据库)。当我在本地(不在 EC2 实例内)运行应用程序时,它可以正常工作并连接到数据库。顺便说一句,我的本地计算机不是托管 SQL Server 数据库的地方。
实例可能有什么问题?
编辑:启用 TCP 并且浏览器部分正在 SQL 管理器中运行。
EDIT2:这是我每次 EC2 应用程序对 te 数据库进行 api 调用时遇到的错误:
ConnectionError: Failed to connect to XX.XX.X.XXX:1433 in 15000ms
但是当我在本地主机上的开发计算机上对应用程序执行该应用程序时,它工作得很好。
【问题讨论】:
与 EC2 实例相关的数据库在哪里——它是在同一个实例上,还是在同一个 VPC 中的另一个 EC2 实例上,或者可能在 Amazon RDS 数据库上?请编辑您的问题以包含这些详细信息。此外,如果数据库位于单独的服务器上,请提供您的安全组设置的详细信息,并告诉我们您是通过公共 IP 地址、私有 IP 地址还是 DNS 名称进行连接。 数据库不是 EC2 实例或任何 AWS 系统。我想我是通过它所在的 IIS 服务器的 IP 连接到它的。 所以您是说您的数据库可以在 Internet 上公开访问,并且您正在连接到其公共 IP 地址?与运行您的节点服务器的 EC2 实例关联的安全组中的出站规则的配置是什么? 【参考方案1】:好的,看来这是网络连接问题。你能ping通数据库服务器吗?
ping xx.xx.xx.xx
第二,你能telnet到端口吗?
telnet xx.xx.xx.xx 1433
我的猜测是这两个都会失败。那么问题来了,为什么?
需要考虑的一些事项:
数据库服务器是否在公共 Internet 上? (出于安全原因,我希望不会。) 您的客户端计算机在公共互联网上吗? 从您的客户端计算机到数据库服务器的网络访问路径是什么? ***隧道? SSL*** 连接?还有什么?我没有适合你的具体解决方案,但希望我能给你一些关于在哪里寻找的想法。问题(几乎可以肯定)不是数据库问题,而是网络连接问题。
【讨论】:
会不会是我必须为客户端应用打开EC2实例安全上的1433端口? 当然。 1433端口如果要连接肯定需要打开。 我在家里的电脑上尝试了 ping 和 telnet 都没有成功以上是关于无法连接到 Nodejs EC2 服务器上的 SQL Server 数据库的主要内容,如果未能解决你的问题,请参考以下文章
无法连接到端口 8080 上的 EC2 Windows 实例
Mysql 无法通过 Amazon EC2 上的套接字连接到本地服务器
ClientConnectorCertificateError:无法连接到主机 discordapp.com:443,AWS 上的认证错误。(ec2)