丢失与 AWS RDS 中的 MySQL DB 的本地连接

丢失与 AWS RDS 中的 MySQL DB 的本地连接

驻留在 AWS RDS 中的 MySQL DB 被设置为与同一 VPC 中的资源连接。为了通过 Windows 11 中的 MySQL Workbench 8.0 CE 连接到它,我始终必须使其可公开访问。当我使用 mysql(2) NPM 包在本地运行的 NodeJS 服务器(使用 localhost)上连接到它时,该服务器与我通过 MySQL Workbench 将其连接到 MySQL DB 所使用的网络相同,它成功连接,但随后立即断开连接。这对我来说很奇怪,因为就在两个小时前,我通过 MySQL Workbench 成功连接到它。我尝试了其他几个包,例如 knex 和 @aws-sdk/client-rds-data,但它们都有同样的问题。因此我回到 MySQL Workbench,第一次连接失败,尽管我确保主机名、端口、用户名和密码正确,但尝试建立新连接,重新启动了我的 PC,确保 RDS 中的 MySQL 设置为可公开访问,并检查 CloudTrail 以确保没有人触碰过它的 AWS 设置(包括我自己),除了我在使其可公开访问时更改其选项。

检查日志,当我尝试使用有效用户通过代码连接时发现以下情况:

nodejs代码导致错误

我的公网 IP 地址:

我的公共 IP 地址

当我尝试在 MySQL Workbench 上连接它时收到错误:

MySQL 工作台错误

我到目前为止所做的但都不起作用:

  • 禁用我的网络代理。
  • 禁用我的防火墙。
  • 手动将 DNS 设置为 Google DNS。
  • 在 AWS RDS 中重置我的用户密码并尝试新密码。
  • 已启用 VPN。

请注意:

  • 我可以通过同一 VPC 中的 AWS 云中的 Lambda 函数连接到 AWS RDS。
  • MySQL 在 EKS 中的一个 pod 上运行,我在执行该 pod 时可以连接到它。
  • 安全组中 RDS 中 MySQL 的 Outbound 规则允许所有地址连接,另外两个 Inbound 规则,一个是公共的,一个是特定的。

SG AWS 中的出站规则

我的问题是:我如何才能重新获得本地连接?首先,失去连接的原因是什么?

任何帮助都将受到感激。

答案1

解决该问题的步骤一般如下:

  • 使您的 RDS 实例“可公开访问”。这会为其分配一个公共 IP 地址,但不执行任何其他操作
  • 确保 RDS 实例位于公共子网中,即它具有到互联网网关的路由
  • 确保安全组授予需要访问的互联网 IP 地址的访问权限
  • 检查网络 ACL
  • 确保远程计算机/本地电脑上的任何防火墙没有阻止访问

这个答案是为了涵盖评论中讨论的内容,以便可以回答/关闭问题。

相关内容