如何更改 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 accessible
和Not 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 的可公开访问选项?的主要内容,如果未能解决你的问题,请参考以下文章
如何从 chromebook 访问 Amazon RDS 实例?
如何获得对 Amazon RDS 数据库的 phpmyadmin 访问权限