远程服务器无法访问 RDS 数据库

远程服务器无法访问 RDS 数据库

我无法从我的服务器访问我的 Amazon RDS MySQL 数据库。

我明白了:-

[Thu Sep 22 13:45:33 2011] [error] [client xx.xx.xx.xx] PHP Warning:  mysqli::mysqli() [<a href='function.mysqli-mysqli'>fqli-mysqli</a>]: (HY000/2003): Can't connect to MySQL server on 'xxxx-1.rds.amazonaws.com' (110) xxx.php on line 22, referer: xxx**

我尝试通过服务器上的 cmdline 手动访问:-

mysql -h xxxx.rds.amazonaws.com -p --port=3306

然后我要求输入密码 - 我输入了密码,然后它挂了,并说

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

这是与端口和/或防火墙相关的问题吗?如果是,我应该解决什么问题?

是不是因为我已经在这个盒子上的 3306 端口上运行了 mysql srvr?

答案1

可能的原因是 - 防火墙阻止了对端口 3306 的访问 - 数据库服务器未在默认端口(3306)上运行 - MySQL 守护进程配置为仅接受来自本地主机的连接,而不接受来自远程主机的连接。(可以通过“netstat -ntlp”进行测试)。

答案2

我认为你的 ec2 实例的安全组必须具有出站 {All TCP} 并选择目的地在任何地方或你的 ip

答案3

我在尝试连接到远程 mysql db 时遇到了同样的问题。

我通过打开数据库服务器上的防火墙以允许流量通过来修复此问题:

sudo ufw allow mysql

答案4

RDS 服务器不可公开访问。如果您尝试 ping 端点 URL,您将看到它返回一个私有 IP(数据库子网上的本地地址),而不是公共 IP。

由于您无法将弹性 IP 附加到 RDS(并且您不应该这样做,因为它会附加到网络接口而不是连接端点),因此您有两种访问 RDS 远程的选项。

A) 使用 SSH 隧道 B) 创建具有公共子网的 VPC 并使用网络地址转换将连接路由到私有子网。您应该通过弹性负载均衡器路由连接以避免单点故障。

相关内容