从EC2实例连接到新的RDS实例

我无法从我的EC2实例连接到我的RDS实例。 我将EC2实例的弹性IP地址添加到RDS安全组。 如下所示:xx.xxx.xx / 32

我正在使用PHP脚本来testing连接。

我将本地IP地址添加到RDS安全组,如下所示:xx.xxx.xx / 32,并使用相同的脚本(本地在我的MAC上运行),我可以从我的本地PC()连接到它。

这里是我用来testing的脚本:

<?php $db_host = 'xxxxxxxxxx'; //this is the RDS endpoint, not the IP address $db_user = 'xxxxxx'; $db_password = 'xxxxxx'; $db_name = 'xxxxxxx'; $mysqli = new mysqli($db_host, $db_user, $db_password, $db_name); echo 'Server Info = '.$mysqli->server_info.'<br />'; echo 'Server Version = '.$mysqli->server_version.'<br />'; echo 'Connect Error = '.$mysqli->connect_error.'<br />'; ?> 

当我从EC2实例运行它时,我得到以下内容:

 Server Info = Server Version = Connect Error = Unknown MySQL server host 'xxxxxxxx' (20) 

当我从本地机器(Mac)运行它时,我得到以下内容:

  Server Info = 5.5.27-log Server Version = 50527 Connect Error = 

有任何想法吗?

我无法从我的EC2实例连接到我的RDS实例。 我将EC2实例的弹性IP地址添加到RDS安全组。 如下所示:xx.xxx.xx / 32

机会是你的EC2实例使用其内部 IP而不是(外部)弹性IP。 请记住,您可以授权安全组而不是IP地址 – 这可能是更好的解决scheme。

当您使用“端点”的DNS名称。 在EC2内部使用时将parsing为内部IP,在外部使用时parsing为公共IP。 您不应该在安全组或主机configuration中使用实际的IP地址。

您的EC2实例正尝试从内部IP连接,因此您的安全入站/出站规则将阻止它。

您应该更改安全组以接受来自其他安全组的stream量。 这是AWS安全组的一项function,只需键入sg- *而不是CIDR,它将向您显示所有选项。

例如:

 Type Protocol Port Range Source All traffic All All sg-**** (default)