繁体   English   中英

为什么我不能直接连接到MySQL RDS数据库实例? (我只能通过SSH连接到EC2)

[英]Why can't I connect directly to my MySQL RDS DB Instance? (I can only connect via SSHing into an EC2)

我创建了一个MySQL RDS数据库实例,并确保该实例位于安全组内,该安全组应允许我从外部连接到它。 安全组允许来自所有IP地址的所有类型的流量。 RDS与我创建的EC2在同一安全组中。

我可以通过SSH连接到EC2,然后使用我在该EC2上安装的mysql CLI客户端连接到RDS,从而连接到数据库实例。 但是,我无法从个人计算机上的MySQL客户端直接连接到RDS。 我为RDS使用相同的主机和用户名,但都使用了EC2,但是绕开EC2无效。

从谷歌搜索到,似乎我收到的错误通常是由RDS的安全组不允许来自我的计算机的流量引起的,但事实并非如此,因为我三重检查了安全组是否向所有公众开放交通。 哎呀,RDS与EC2在同一安全组中,并且我能够连接到EC2。

发生什么了?

这就是为我解决问题的原因。 在RDS仪表板上,查看您实例的安全组。 单击此按钮,它将带您进入安全组页面。

尽管它将为“入站”和“出站”单击编辑都显示“所有流量”,并确保来源显示“我的IP”。 我不建议使用所有IP,因为这会向互联网上的任何人开放。 如果没有静态IP,请确保在连接停止后刷新此字段。

之后,我能够连接到AWS RDS T2实例。

有时,当我尝试连接VPC内的东西时,DNS变得很奇怪。 但是,因为您在VPC内,所以只有一个专用IP地址。 如果要在计算机和RDS之间建立直接连接,我将不使用VPC,这只会增加问题。 如果确实需要将其放置在VPC内,则像您已经拥有的那样,在我的vpc中启动一个ec2实例。 然后我通过运行以下命令将RDS实例隧道传输到ec2实例

screen
ssh -L ec2-instanceDNS.com:3308:rds-dns.com:3308

分离屏幕

Ctrl+A
D

检查您的个人计算机所在网络的防火墙中打开了哪些传出端口。 即使RDS实例允许所有流量,防火墙也可能阻止您建立连接。 您可以使用http://portquiz.net/来测试您的网络是否允许在您连接到数据库的端口上进行通信。 对于MySQL,端口最有可能是3306。 如果无法通过网络访问与数据库一起使用的端口,请使用刚刚链接的“端口测验”工具找到可以使用的端口,然后使用该端口重新制作数据库实例。 (RDS不允许您更改现有实例上的端口)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM