在同一VPC上从EC2连接到RDS

我有一个RDS实例运行在一个没有NAT的子网上,一个EC2实例运行在另一个configuration了Internet网关的子网上,它们都位于同一个VPC中。 我已将RDS实例configuration为不可公开访问。

我在远程EC2(在第二个子网上运行)中使用以下命令连接到RDS实例:

mysql -h xxxx.eu-central-1.rds.amazonaws.com -P 3306 -u root -p 

我input了configurationRDS时设置的正确密码,但出现以下错误:

错误2003(HY000):无法连接到'XXX.eu-central-1.rds.amazonaws.com'(110)上的MySQL服务器

我检查过,这不是一个名称parsing问题。 ec2将端点转换为正确的内部IP。


这是我的设置:

RDS

VPC :和EC2一样

可用性区域eu-central-1b

SUBNET :在RDS面板中,我可以看到所有的子网,但是我可以看到在区域b的私有子网中有一个较less的可用IP

SECURITY GROUP :私有安全组(不包括出站规则,以mysql端口和公安团队作为源的入站,单一规则)

公众可访问 :不

MULTI AZ :不

EC2

VPC :和RDS一样

可用性区域eu-central-1b

子网 :区域b的公共子网

安全组 :所有来自任何来源的端口作为入站规则,以及来自任何来源的ssh,http和https端口作为出站规则。

我可以使用http和ssh访问EC2实例。 它按预期工作。

VPC

VPC :RDS和EC2都使用相同的

子网 :每个AZ有一个公共和一个私人,共有4个

DHCP :默认值( domain-name = eu-central-1.compute.internal domain-name-servers = AmazonProvidedDNS

路由表 :对于公共子网,路由到local (自动)和互联网逍遥游,私人,只有local (自动)

ACLs :public: allow all入站和出站的全部。 私人:只allow all入境的allow all 。 这里还有一个id *用于deny all ACL,无论是入站还是出站,但是我很确定那是假设存在的,我不能删除它。

我究竟做错了什么? 我错过了什么吗?

检查你的安全组,这是可能的罪魁祸首。 使用DNS名称的VPC内的主机将始终使用远程资源的私有IP,因此NAT / IG部分并不重要。

您需要确保您的VPC / EC2安全组和NACL允许适当的访问。

我有一个教程,其中涵盖了您可能会觉得有用的EC2 / RDS安全组设置 。

你也应该检查这个答案 。