【问题标题】:How do I change the publicly accessible option for Amazon RDS?如何更改 Amazon RDS 的可公开访问选项?
【发布时间】:2014-05-16 23:38:27
【问题描述】:

当您创建一个新的 amazon rds 实例时,您可以为“可公开访问”选项选择真/假, 有没有办法为现有实例更改此设置?

【问题讨论】:

  • 注意:在 RDS 启动后将此属性更改为 true 可能不起作用:Unable to connect to server: could not translate host name ***.rds.amazonaws.com to address: Unknown host

标签: amazon-web-services amazon-rds


【解决方案1】:

编辑:是的,现在可以将“公共访问”属性从“否”更改为“是”。 (反之亦然)万岁!

出于历史目的,此处留下的旧答案: 没有。

不过会很好,是吗?作为一种解决方法,您的最佳选择如下:

  • 为您的实例创建快照。
  • 使用 Publicly Accessible 选项从此快照启动新实例。

证据:

  • John G 在this post 中的外交使他无法像我一样写“否”,但他的回答是“您可以创建当前 RDS 数据库的快照并使用可公开访问的选项启动它。”很清楚他提供了解决方法,因为直接解决方案不可用。

【讨论】:

  • 右键单击实例并选择“修改”以找到此选项
  • Silas 评论才是真正的答案。
  • 警告:Aurora serverless 目前不支持此功能,您必须从 VPC 内连接到它。
  • 我没有看到像@Silas 那样的右键单击选项,但我确实在实例页面的右上角看到了一个“修改”按钮。也可以找到返回到数据库列表,然后选择实例,然后单击“修改”按钮。
  • MySql 支持“修改”,但它隐藏在“连接->附加配置”中。
【解决方案2】:

我偶然发现了这个寻找相同的答案。遗憾的是,看起来 10 个月后答案仍然是“否”——您无法将现有数据库更改为公开可用。

但是 - 您可以接近...即使它不是公开可用的,它也可用于您在同一个 VPC 中启动的 EC2 实例。您可以设置从您的计算机通过 EC2 实例到该数据库的 SSH 隧道 - 有效地让您访问该实例,而无需从快照重新启动它。

你没有指定你电脑的操作系统,所以我很方便地假设 linux...

首先,启动一个 EC2 实例,让它通过安全组访问您的 RDS 实例,确保您可以登录到该 EC2 实例,并确保您可以从该 EC2 实例访问 RDS 数据库。如果其中任何一个失败,其余的都将不起作用。

接下来,设置隧道:

ssh -v -N -L 1234:rds.endpoint:3306 yourec2username@your.ec2.host

其中 rds.endpoint 是您的 RDS 实例的 URL,your.ec2.host 是您的 EC2 实例的主机名,yourec2username 是您在 EC2 主机上的用户名。

然后您可以使用

连接到 RDS 实例
mysql -p -u dbuser -h 127.0.0.1 -P 1234 dbname --password=dbpassword

希望对遇到此问题的下一个人有所帮助...

【讨论】:

    【解决方案3】:

    AWS 现在似乎允许更改可访问性属性。然而,数据库似乎已被修改,在此期间最终可能会出现连接问题。

    我还没有找到任何关于它的博客/新闻文章。但是在我的帐户中,我可以做到。

    【讨论】:

    • 我能够使用控制台修改实例。更改需要一些时间才能传播,并且控制台会显示旧设置,直到完成。
    【解决方案4】:

    这是一个老问题,但这可能对某人有所帮助。

    不需要删除和恢复数据库,只需在AWS控制台中打开数据库实例,点击Modify寻找Additional connectivity configuration,后面只有Publicly accessibleNot publicly accessible两个选项。选择您的选项,等待几秒钟以将修改应用于您的实例和 eureka,完成。

    更多信息请查看the official docs

    【讨论】:

      【解决方案5】:

      我无法找到“可公开访问”设置。要找到它,请选择实例,点击“修改”,然后点击Additional Configuration。这将展开,您将看到一个“可公开访问”选项。

      【讨论】:

        【解决方案6】:

        您可以在您的 VPC 中创建一个 ssh 隧道,或者使用 iptables 进行端口转发,但是最好和最简单的解决方案是创建一个具有 PubliclyAccessible 标志为 true 的只读副本,然后将该副本提升为主副本。 我建议始终使用 RDS 端点的 CNAME,这样您就可以在 DNS 中更改 CNAME 而无需触摸您的应用。

        制作快照并恢复它会在您的应用中增加不必要的停机时间。

        看!

        【讨论】:

          【解决方案7】:

          首先找出你所在的 VPC。

          如果您希望让您的 RDS 实例可公开访问,您必须在 DNS 主机和解析中启用 VPC 属性。

          您可以使用参数PubliclyAccessible 进行设置,该参数将解析为公共 IP 地址。

          这是来自 AWS 文档:

          Amazon RDS 支持两个 VPC 平台:EC2-VPC 和 EC2-Classic。这 EC2-VPC 平台有一个默认 VPC,所有新的数据库实例都在其中 除非您另有说明,否则已创建。 EC2-Classic 平台可以 没有默认 VPC,但与任一平台一样,您可以创建 您自己的 VPC 并指定数据库实例位于该 VPC 中。

          【讨论】:

          • 您引用的内容当然是真实的。但它们对回答问题没有帮助。
          【解决方案8】:

          到目前为止,“PubliclyAccessible”变量在 Cloudformation 工具中不可用。因此,如果您使用 CloudFormation 模板部署 RDS,则无法选择更改此参数。默认情况下为“否”。但是如果您使用 AWS 控制台,您可以选择将“Publicly Accessible”值从默认 No 更改为 Yes。我认为 AWS 应该使用此参数更新 cloudformation“AWS::RDS::DBInstance”函数。

          谢谢。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2020-08-12
            • 1970-01-01
            • 1970-01-01
            • 2015-04-17
            • 2019-07-28
            • 2020-07-01
            • 1970-01-01
            相关资源
            最近更新 更多