【问题标题】:AWS: can't connect to RDS database from my machineAWS:无法从我的机器连接到 RDS 数据库
【发布时间】:2016-09-09 19:47:07
【问题描述】:

EC2 实例/实时网络可以很好地连接到 RDS 数据库。但是当我想在我的本地机器上调试代码时,我无法连接到数据库并得到这个错误:

OperationalError: (2003, "Can't connect to MySQL server on 'aa9jliuygesv4w.c03i1 ck3o0us.us-east-1.rds.amazonaws.com' (10060)")

我已将.pem.ppk 键添加到.ssh,并且我已经配置了EB CLI。我不知道我该怎么办了。

仅供参考:该应用在 Django 中

【问题讨论】:

  • 我猜 AWS 有一个官方支持渠道,人们可以通过该渠道获得报酬来回答像您这样的问题。无论我多么想帮助您,如果不访问您的 AWS 账户,就很难重现该问题 - 这使得问题在这里有点离题。
  • 检查您的安全组 - 创建数据库时,您是否选择了 Publicly Accessible 为是?

标签: mysql django database amazon-web-services amazon-rds


【解决方案1】:

如果您已尝试上述所有答案,请尝试此... 重新创建数据库....

关于数据库创建的 AWS 提供了允许公共/私人访问访问的选项

【讨论】:

    【解决方案2】:

    不要忘记检查您的 VPN 或防火墙是否阻止连接。

    【讨论】:

      【解决方案3】:

      接受来自任何 IP 地址的流量

      创建 RDS 实例后,我的安全组入站规则设置为特定 IP 地址。我必须编辑入站规则以允许从任何 IP 地址访问。

      • “安全组规则”
      • 选择一个安全组
      • 点击“入站规则”
      • 点击“编辑入站规则”
      • 在“来源”下选择下拉菜单并点击“任何地方”
      • ::0 或 0.0.0.0/0 应该出现。
      • 点击“保存规则”

      【讨论】:

      • 谢谢@Caleb,这对我有帮助。
      • 我都添加了,现在可以使用了;)
      【解决方案4】:

      即使从 ec2 实例内部,我也无法连接。

      在挖掘 AWS RDS 选项后发现,ec2 实例只能连接到它们所在 VPC 中的 RDS。

      在 RDS 所在的同一 VPC 中创建 ec2 实例时,我可以按预期访问它。

      【讨论】:

        【解决方案5】:

        好吧,几乎每个人都指出了答案,我会从不同的角度来解释,以便您理解。

        有两种方式可以连接到您的 AWS RDS

        1. 您在同一个 VPC 和子网中配置一个实例。您安装了工作台,您将能够连接到数据库。您不需要将其公开访问。示例:您可以在同一个 VPC 组中配置一个 windows 实例并安装工作台,您可以通过端点连接到数据库。

        2. 另一种方法是让您的 IP 可以公开访问 Db,以防止不必要的访问。您可以更改数据库安全组以仅允许数据库端口流量到您的 IP。这样,您的数据库将可以公开访问,但仅供您访问。这是我们在 SG 的源部分添加安全组的各种 AWS 服务的方式。

        如果这两个选项都不起作用,则错误在 VPC 路由表中,您可以在那里检查它是否与子网关联,以及是否连接了 Internet 网关。

        您可以观看此视频,它会消除您的疑虑:

        https://youtu.be/e18NqiWeCHw

        【讨论】:

          【解决方案6】:

          就我而言,当我升级尺寸时。 rds 实例的私有地址属于 VPC 的私有子网。您可以使用the article 我的实例位于私有子网中,我无法从本地计算机连接到它以查找您的数据库实例地址。

          但是,更改路由表并没有解决我的问题。我最终解决问题的方法是降级尺寸,然后再升级尺寸。一旦私有地址回退到公共子网。一切都像魅力一样。

          【讨论】:

            【解决方案7】:

            只花了两个小时浏览此页面上的出色解决方案。是时候给出愚蠢的答案了!

            我重做了我的安全组、VPC、路由表、子网、网关……不。我从 AWS 控制台复制粘贴了 URL,在某些情况下会导致 隐藏的尾随空格。端点位于<div> 元素中,浏览器在复制时会给出\n。将其粘贴到 Intellij db 连接器中会将其强制为空格。

            我只是在将 URL 粘贴到源代码中的引号字符串后才注意到问题。

            【讨论】:

            • 对于那些在列表中排名靠后的人......我必须执行此页面上发布的 3 个解决方案。 1)我必须添加@aminah 概述的入站规则,2)我必须确保按照 AnythonR 的概述设置公共可访问性,最后 3)复制文本时主机名末尾有一个空格从aws控制台...最后一个我花了一段时间才弄清楚...希望他们有一个“复制到剪贴板”按钮,就像Azure一样。
            【解决方案8】:

            确保 PUBLIC ACCESSIBILITY 设置为是

            这是我过去 3 天试图解决的问题......

            Instructions to change Public Accessibility

            【讨论】:

            • 然后你可以添加一个安全组,使用你的web服务器的IP和你的开发者访问ips。
            • 如果我这样做,人们还需要密码吗?或者任何人都可以访问?
            • 他们仍然需要您的凭据和下载的密钥才能 ssh 进入您的数据库。
            • 在哪里可以找到这个设置?
            • ...这样做您可以跳过 VPC 分配(说明链接中的第一点)
            【解决方案9】:

            确保您的 VPC 和子网足够宽。

            以下 CIDR 配置适用于两个子网:

            • VPC 10.0.0.0/16 10.0.0.0 — 10.0.255.255 (65536 addresses)

            • 子网 1 10.0.0.0/17 10.0.0.0 — 10.0.127.255 (32768 addresses, half)

            • 子网 2 10.0.128.0/17 10.0.128.0 — 10.0.255.255 (32768 addresses, other half)

            如果您需要三个子网,请调整它。


            我无法连接到我的 RDS 数据库。我已经手动检查了所有细节,一切都很好。没有任何问题的迹象,我在文档中找不到任何合适的信息。我的 VPC 配置了窄 CIDR:10.0.0.0/22,每个子网有 255 个地址。在我将 CIDR 更改为 10.0.0.0/16 并将其完全拆分为两个子网之后,我的 RDS 连接开始工作。能找到问题的根源真是幸运,因为这对我来说没有任何意义。

            【讨论】:

              【解决方案10】:

              事实证明这并不难。执行以下步骤:

              1. 转到 EC2 仪表板
              2. 转到安全组选项卡
              3. 选择并仅选择 RDS 数据库安全组。您将在底部看到安全组详细信息
              4. 点击入站标签
              5. 点击编辑按钮
              6. 添加类型:MYSQL/Aurora;协议:TCP;范围:3306;来源:0.0.0.0/0

              【讨论】:

              • 将您的 MySQL 实例打开到 0.0.0.0/0(每个人?)是否存在安全风险?
              • 这对我有用!但是你能解释一下这是否是允许外部访问 RDS 的标准方式吗?
              • 就我而言,我只需要添加 EC2 实例的“私有 IP”
              • @kafka 如果您在测试数据库上进行调试,那很好,否则您可能希望将 IP 范围限制为受信任的 IP(例如,您公司的 IP)。在这种情况下,你会写 X.X.X.X/32,只允许一个 IP 地址。旁注:创建数据库安全组时,Amazon RDS 向导似乎将规则设置为您的“当前 IP”。我现在意识到这一点,因为我回到家,我在办公室玩的测试数据库连接停止工作。
              • 这对我有用。谢谢。正如@coconup 提到的,现在RDS 在您创建规则时在源代码中有“我的IP”选项。
              猜你喜欢
              • 2021-10-14
              • 2019-07-05
              • 1970-01-01
              • 2021-07-17
              • 2016-09-02
              • 2021-05-03
              • 2017-05-22
              • 1970-01-01
              • 2021-06-10
              相关资源
              最近更新 更多