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

47

当您创建新的Amazon RDS实例时,会提供选择“公开访问”选项的真/假, 对于现有实例是否可以更改此设置?

对于现有实例,您可以通过转到AWS管理控制台,选择要更改的实例,然后在“连接”部分中更改“公开可访问性”选项来更改此选项。


注意:在启动RDS之后将此属性更改为true可能无法正常工作:“无法连接到服务器:无法将主机名***.rds.amazonaws.com翻译为地址:未知的主机”。 - psycho brm
9个回答

39

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

为了历史纪录保留旧答案:

不行。

不过这确实很不错,对吧?作为解决方法,您最好选择以下选项:

  • 创建实例的快照。
  • 使用“公开访问”选项从此快照启动新实例。

证据:

  • John G在此帖中通过外交手段避免像我一样写出“不行”,但他的回答“您可以创建当前RDS数据库的快照,并使用公开访问选项启动它。”表明他提供此解决方法是因为直接解决方案不可用。

15
右键单击实例,选择“修改”以查找此选项。 - Silas
2
警告:Aurora无服务器当前不支持此功能,您必须从VPC内部连接它。 - Ben Butterworth
1
我没有像@Silas一样看到右键选项,但我在实例页面右上角看到了一个“修改”按钮。也可以回到数据库列表,然后选择实例,再点击“修改”按钮。 - OfirD
1
MySql支持“修改”功能,但它隐藏在“连接性->附加配置”中。 - Jim
请参考以下链接了解关于RDS实例如何在VPC子网间进行连接的相关内容:https://aws.amazon.com/premiumsupport/knowledge-center/rds-connectivity-instance-subnet-vpc/ - FabricioFCarv

22
为了找到“公共访问”设置,选择实例并点击“修改”,然后单击附加配置。这将展开选项,您将看到一个“公共访问”选项。

输入图像描述


11

在寻找同样答案时,我偶然发现了这个。遗憾的是,看起来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
希望这能帮助到下一个碰巧遇到这个问题的人...

5

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

不需要删除和恢复数据库,只需在AWS控制台中打开DB实例,单击修改,查找附加连接配置,然后那儿只有两个选项公开访问非公开访问。选择您的选项,等待几秒钟,以便修改应用于您的实例,就完成了。

欲了解更多信息,请查看官方文档


4

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

我没有找到任何关于此的博客/新闻文章。但是在我的账户中,我可以这样做。


1
我能够使用控制台修改实例。更改需要一些时间才能传播,直到完成之前,控制台仍显示旧设置。 - daxlerod

1
您可以在VPC中创建ssh隧道,或使用iptables进行端口转发,但最好和最简单的解决方案是创建一个带有PubliclyAccessible标志为true的读取副本,然后将该副本提升为主库。 我建议始终使用RDS端点的CNAME,这样您可以更改DNS中的CNAME而不影响应用程序。
制作快照并还原会给您的应用程序增加不必要的停机时间。
看!

1
对于像我这样苦苦寻找的人,公开访问选项可在“连接性”>“附加配置”下找到。

0

首先找出您所在的VPC。

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

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

这是来自AWS文档的内容:

Amazon RDS支持两种VPC平台:EC2-VPC和EC2-Classic。除非您另有指定,否则所有新的DB实例都将在EC2-VPC平台的默认VPC中创建。EC2-Classic平台没有默认VPC,但与任何平台一样,您可以创建自己的VPC并指定DB实例位于该VPC中。


3
你引用的内容当然是真实的,但它们对回答问题没有帮助。 - mdahlman

-2

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

谢谢。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接