我在AWS中有一个MySQL RDS实例已正确设置。
我在AWS中也有一个Linux EC2实例。
但是,我无法从EC2实例连接到我的RDS实例。
我可以从我自己的笔记本电脑连接到RDS实例。
我怀疑这是四件事之一
但是,据我所知,我已经检查了所有这些内容,而且它们似乎是有序的。
我应该看什么?
更新1 :在@mbaird的问题之后,我检查过EC2实例和RDS实例都在同一个VPC上。这有什么含义?
更新2 :用户问题@“Michael - sqlbot”,当我说无法连接时,在命令行运行mysql时,用
mysql --host=<my-hostname> --port=3306 --user=<user> --password=<password>
我可以从我自己的笔记本电脑连接,但是当我尝试从我的EC2实例连接时,它只是坐在那里什么都不做。过了一会儿,我收到了消息
ERROR 2003 (HY000): Can't connect to MySQL server on '<my-hostname>' (110)
此外,当我尝试从我的Java应用程序服务器连接到它时,我在堆栈跟踪中获得以下内容
Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
...
The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
...
Caused by: java.net.ConnectException: Connection timed out
更新3 :根据我是AWS的内部还是外部的,DNS解析会有所不同。
nslookup <my-hostname>
我的笔记本电脑上的导致IP地址52.11.*.*
范围,而从我的EC2实例执行相同操作会导致172.31.*.*
范围内的IP地址。
答案 0 :(得分:1)
如果您的EC2实例和RDS数据库实例位于不同的VPC中,您可能正在使用VPC对等连接两个VPC。但在你的情况下,两者都在同一个VPC中。非常好。确保在私有子网中启动RDS数据库实例,并在公有子网中启动EC2实例。
在EC2实例中连接RDS数据库实例
mysql-server
包。您需要使用mysql-server
连接RDS数据库实例。 mysql --host=<my-hostname> --port=3306 --user=<user> --password=<password>
命令用于连接RDS数据库实例。 在MySQL WorkBench中连接RDS数据库实例
要验证连接,请点击测试连接按钮。
您选择标准(TCP / IP)而不是SSH 的原因是通过EC2实例连接RDS数据库实例。首先,它将连接到EC2实例,然后访问RDS数据库实例,因为数据库实例没有Internet访问权限,并且它位于私有子网中。
确保在java Web应用程序中,您提到RDS主机名,端口,用户名和密码是否正确。无需在应用程序中提及EC2主机名。