我有一个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。
VPC :和EC2一样
可用性区域 : eu-central-1b
SUBNET :在RDS面板中,我可以看到所有的子网,但是我可以看到在区域b的私有子网中有一个较less的可用IP
SECURITY GROUP :私有安全组(不包括出站规则,以mysql端口和公安团队作为源的入站,单一规则)
公众可访问 :不
MULTI AZ :不
VPC :和RDS一样
可用性区域 : eu-central-1b
子网 :区域b的公共子网
安全组 :所有来自任何来源的端口作为入站规则,以及来自任何来源的ssh,http和https端口作为出站规则。
我可以使用http和ssh访问EC2实例。 它按预期工作。
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安全组设置 。
你也应该检查这个答案 。