【问题标题】:Connecting to an RDS from an EC2 on different subnets without NAT在没有 NAT 的情况下从不同子网上的 EC2 连接到 RDS
【发布时间】:2017-02-01 02:44:10
【问题描述】:

我有一个在没有 NAT 的子网上运行的 RDS 实例,以及在另一个配置了 Internet 网关的子网上运行的 EC2 实例,两者都位于同一个 VPC 中。我已将 RDS 实例配置为不可公开访问。

我在远程 EC2(在第二个子网上运行)中使用以下命令连接到 RDS 实例:

mysql -h xxxx.eu-central-1.rds.amazonaws.com -P 3306 -u root -p

我在配置RDS时输入了正确的密码,但出现以下错误:

无法连接到 xxxx.eu-central-1.rds.amazonaws.com 上的 MySQL 服务器

我做错了什么?我错过了什么吗?

【问题讨论】:

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


    【解决方案1】:

    您很可能需要在分配给 RDS 服务器的安全组中打开端口 3306。特别是,创建一个允许在端口 3306 上进入的规则,并为源使用分配给 EC2 服务器的安全组的 ID。

    【讨论】:

    • 入站端口 3306 已打开。 “入站”仅适用于子网本身还是整个 VPC?
    • 你打开它是为了什么?所有流量?如果是这样,它适用于整个 VPC。我刚刚再次检查了您的问题,您确定root 是正确的帐户吗?您无法访问 RDS 实例上的 root 数据库帐户。
    • 当我在控制台中配置 RDS 时,它要求我输入用户名,我选择了 root。问题是它没有返回错误的用户名或密码错误,我只是在等待几分钟后从 MySQL 收到 could not connect 错误。
    【解决方案2】:

    您的子网和/或 PostgreSQL 实例的安全组入口规则必须为 PostgreSQL 打开端口 3306。如果您更改了默认端口,则必须改用该端口。

    您的 EC2 实例不必通过 Internet 进行通信即可访问它,它只需要在安全组中打开适当的端口即可。

    如果您不允许 EC2 安全组中的所有出口数据,则需要确保 EC2 安全组上的出口端口 3306 对 RDS 安全组开放。

    【讨论】:

    猜你喜欢
    • 2016-04-23
    • 2019-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-25
    • 2019-10-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多