无法从外部VPC连接到RDS实例(ERROR 2003(HY000)无法连接到MySQL服务器)

我创build了一个VPC,里面有一个RDS实例。 RDS实例是可公开访问的 ,其设置如下:

RDS设置

  • ElasticBeanstalk:从configuration文件中设置实例types和安全组
  • 缩小Amazon EBS卷大小
  • 自动在EC2上安装卷
  • 尝试从Route 53到S3设置别名目标时没有可用的目标
  • 如何从数据中心内部和外部解决EC2实例?
  • 如果使用Cloudfront作为文件,是否需要Amazon s3?
  • 连接到RDS实例的安全组接受所有stream量:

    安全组设置

    我所有的networkingACL都接受所有的stream量。 但是,我无法从我的VPC之外的机器访问我的实例。 我得到以下错误:

    root@vps151014:~# mysql -h mysql1.xxxxxxxxxxxx.eu-west-1.rds.amazonaws.com -P 3306 -u skullberry -p Enter password: ERROR 2003 (HY000): Can't connect to MySQL server on 'mysql1.xxxxxxxxxxxx.eu-west-1.rds.amazonaws.com' (110) 

    如果我从我的VPC内部的EC2运行相同的命令,我可以连接。 我试过从几台机器连接,所有这些机器都没有防火墙(即端口3306打开)。

    我明显错过了一些东西,但似乎一切正常configuration。 可能是什么问题?

  • Python,“你没有权限访问该端口”
  • 为什么S3网站的redirect位置不被CloudFront所遵循?
  • EC2和Rackspace之间的外部负载平衡器解决scheme
  • 发布路由将打开服务器之外的vpnstream量
  • 如何在AWS上平衡sftp实例
  • Amazon CloudFront是否收取存储费用?
  • One Solution collect form web for “无法从外部VPC连接到RDS实例(ERROR 2003(HY000)无法连接到MySQL服务器)”

    对于VPC中的“公开”(互联网)访问的RDS实例,它所连接的所有子网必须是“公共” – 而不是VPC的“私有”子网。

    公共子网本质上定义为具有因特网网关对象(igw-xxxxxxxx)作为其到“Internet”的路由的子网,或者至less是任何需要访问的Internet目标。 通常,这是一个0.0.0.0/0的目标地址。 公共子网必须用于具有关联的公共IP地址的实例(包括RDS),并且不应该用于不具有公共IP地址的实例,因为专用地址在没有翻译的情况下不能在互联网上工作。

    相比之下,私有子网将其路由表configuration为通过另一个EC2实例(通常是NAT实例)到达Internet目标。 这显示在与该子网关联的VPC路由表中,如i-xxxxxxxx,而不是“igw”。 那台机器(本身实际上与它作为一个路由目的地在不同的子网上)充当一个转换器,允许仅使用私有IP的实例透明地使用NAT机器的公共IP为他们的互联网需求。 具有公共IP地址的实例如果连接到私有子网,则无法与Internet正确交互。

    在特定情况下,在这里,与RDS实例关联的子网并没有真正configuration成可以简单地分类为私有子网或公有子网的子网,因为子网根本没有默认路由。 通过“igw”对象添加默认路由,或者像OP那样,将需要连接的Internet IP地址的静态路由添加到子网的VPC路由表中,可以解决连接问题。

    但是,如果遇到类似问题,则不能简单地更改路由表或build立新的路由表,并将子网与它们关联,除非在子网上没有其他任何东西已经正确工作,因为可以合理地进行更改预计将打破现有的连接。 在这种情况下,正确的过程将是在不同的子网上configuration正确的路由表条目。

    在build立VPC时,理想的做法是清楚地定义子网angular色,然后在VPC首次debugging时完全configuration必要的路由。 记住整个VPC“LAN”是一个软件定义的networking也很重要。 与物理networking不同,路由器可能成为瓶颈,在同一个子网内放置交通繁忙的机器通常是合理的。stream量穿越子网在VPC上没有性能劣势。 机器应放置在适合机器IP寻址需求的子网上 – 公共地址,公共子网, 没有公共地址,私人子网。

    有关VPC中私有/公有子网物stream的更多讨论,请参见“ 为什么我们需要VPC中的私有子网 (堆栈溢出)”。

    服务器问题集锦,包括 Linux(Ubuntu, Centos,Debian等)和Windows Server服务器.