如何更改 Amazon RDS 的可公开访问选项?

Posted

技术标签:

【中文标题】如何更改 Amazon RDS 的可公开访问选项?【英文标题】:How do I change the publicly accessible option for 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 【参考方案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”函数。

谢谢。

【讨论】:

以上是关于如何更改 Amazon RDS 的可公开访问选项?的主要内容,如果未能解决你的问题,请参考以下文章

如何比较两个Amazon RDS快照?

如何从 chromebook 访问 Amazon RDS 实例?

如何获得对 Amazon RDS 数据库的 phpmyadmin 访问权限

Amazon RDS 主用户权限

如何将 MySQL Workbench 连接到 Amazon RDS?

使用 PHPMyAdmin 管理 Amazon RDS