这是我的设置:

这是我的设置:

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

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

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

我输入了配置 RDS 时设置的正确密码,但出现以下错误:

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

我检查过了,这不是名称解析问题。ec2 将端点转换为正确的内部 ip。


这是我的设置:

远程数据传送系统

私有云平台:与 EC2 相同

可用区域eu-central-1b

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

保安组:私有安全组(无出站规则,入站时使用 mysql 端口和公共安全组作为源的单条规则)

公开可得: 不

多可用区: 不

EC2

私有云平台:与 RDS 相同

可用区域eu-central-1b

子网:区域 b 的公共子网

保安组:公共安全组(所有来源的端口作为入站规则,所有来源的ssh、http、https端口作为出站规则)

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

私有云平台

私有云平台:RDS 和 EC2 使用相同的

子网:每个可用区一个公有,一个私有,共 4 个

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

路由表:对于公共子网,路由到local(自动)和互联网网关,对于私有子网,仅路由到local(自动)

ACL:public:allow all在入站和出站中。private:仅在入站中。在两个 ACL 上,在入站和出站上都有一行带有allow allid 的行,但我很确定它应该在那里,我无法删除它。*deny all

我做错了什么?我遗漏了什么吗?

答案1

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

答案2

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

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

您还应该检查这个答案

相关内容