【问题标题】:Connection Timeout EC2 Java Web App to RDS mySQL Database连接超时 EC2 Java Web 应用程序到 RDS mySQL 数据库
【发布时间】:2014-07-05 04:26:48
【问题描述】:

我是 AWS 的初学者。到目前为止,我设法在 RDS 和 EC2 Java Web 应用程序中设置了一个 mySQL 数据库。我正在使用 eclipse 插件来部署 Web 应用程序。我可以通过来自浏览器的 http 请求连接到 Java Web 应用程序。此外,我可以从命令行终端连接到 mySQL 数据库。

但是,每当我尝试从 java Web 应用程序中的代码连接到 mySQL 数据库时,我的请求都会超时。我相信我的 URL 是正确的,可以在代码中建立连接。我只是使用这些线路进行连接。我在本地主机上成功地做了很多次。

Class.forName("com.mysql.jdbc.Driver").newInstance();
con = DriverManager.getConnection(url);

我已经阅读了很多关于安全组的信息,但是在我的 RDS 管理控制台中它说:

“您的账户在该地区不支持 EC2-Classic 平台。仅当支持 EC2-Classic 平台时才需要数据库安全组。相反,请使用 VPC 安全组来控制对您的数据库实例的访问。”

有人有什么建议吗?提前致谢!

【问题讨论】:

    标签: java mysql amazon-web-services amazon-ec2 amazon-rds


    【解决方案1】:

    您有一个更新的 AWS 账户,它只启用了 VPC,而不是 EC2 经典。对所有 RDS 数据库实例以及 EC2 实例的访问将通过 VPC 安全组进行。

    首先检查您运行 Java Web 应用程序的 EC2 实例所在的安全组,并对您的 RDS 实例执行相同操作。然后转到 VPC 控制台并查看那些安全组。您需要确保EC2实例可以访问3306端口上的RDS实例。最好的方法是将EC2实例放在一个组中,将RDS放在另一个组中,然后通过组ID允许整个组访问RDS。

    【讨论】:

    • 谢谢!像魅力一样工作。
    • [使用附加信息更新此线程] 如果您的实例位于经典 EC2 中,您还可以启用 ClassicLink 以允许经典 ec2 实例与 VPC 中的实例(包括 RDS)之间的连接。如果您仍然遇到问题(可以使用 telnet 或 nc 创建套接字连接),但无法使用命令行 mysql 客户端,请尝试将 ec2 实例上的 MTU 降低到 1400 并重试。由于封装(不支持 PMTUD),ClassicLink 需要较小的数据包大小。
    猜你喜欢
    • 2017-05-22
    • 2014-11-26
    • 2023-01-23
    • 2020-12-26
    • 1970-01-01
    • 2017-02-02
    • 1970-01-01
    • 1970-01-01
    • 2020-03-23
    相关资源
    最近更新 更多