无法从 ec2 连接到 rds
Cannot connect to rds from ec2
我无法从 ec2 实例连接到我的 rds 实例,我得到的错误是连接:连接超时。但是,我可以在本地计算机上从 mysql workbench 运行ning 连接。
- RDS 实例设置为公开可用
- RDS实例和ec2实例在同一个安全组
- 配置为允许来自任何地方的连接的安全组仍然产生相同的错误
- 当 运行 从 ec2 到 rds 时,traceroute 为所有输出 ***,但是当 运行 来自本地机器时提供正常输出,提供显示它未被防火墙阻止的输出
- RDS实例和ec2实例在同一个可用区,不是多区rds
- 正在使用以下 golang 打开连接:
conn, err = sql.Open("mysql", fmt.Sprintf("%s:%s@tcp(%s:%s)/%s", os.Getenv("db_user"), os.Getenv("db_pass"), os.Getenv("db_endpoint"), os.Getenv("db_port"), os.Getenv("db_name")) + "?parseTime=true")
这似乎是防火墙问题,但更改安全组权限没有帮助。
将资源放在相同 安全组中不会授予这些资源之间的访问权限。这是因为安全组规则 分别应用于每个资源 。因此,安全组需要“允许来自自身的访问”以允许连接。但是,由于您的 RDS 数据库配置为 public 访问,这实际上不起作用,因为 RDS 数据库将有一个 public IP 地址。
鉴于您的数据库 public 可以访问,其 DNS 名称将解析为 public IP 地址。因此,你的配置应该是:
- 为 Amazon EC2 实例 (
App-SG
) 创建一个安全组,允许适当的入站权限(例如 HTTP、SSH)并具有默认的出站规则(允许所有)
- 为 Amazon RDS 数据库 (
DB-SG
) 创建一个安全组,允许来自 EC2 实例的 public IP 的入站访问 地址
- 但是,如果 RDS 数据库 未 配置为 public 访问,您将配置安全组以允许来自
App-SG
的入站访问。也就是说,DG-SG
将具体指代 App-SG
。
我无法从 ec2 实例连接到我的 rds 实例,我得到的错误是连接:连接超时。但是,我可以在本地计算机上从 mysql workbench 运行ning 连接。
- RDS 实例设置为公开可用
- RDS实例和ec2实例在同一个安全组
- 配置为允许来自任何地方的连接的安全组仍然产生相同的错误
- 当 运行 从 ec2 到 rds 时,traceroute 为所有输出 ***,但是当 运行 来自本地机器时提供正常输出,提供显示它未被防火墙阻止的输出
- RDS实例和ec2实例在同一个可用区,不是多区rds
- 正在使用以下 golang 打开连接:
conn, err = sql.Open("mysql", fmt.Sprintf("%s:%s@tcp(%s:%s)/%s", os.Getenv("db_user"), os.Getenv("db_pass"), os.Getenv("db_endpoint"), os.Getenv("db_port"), os.Getenv("db_name")) + "?parseTime=true")
这似乎是防火墙问题,但更改安全组权限没有帮助。
将资源放在相同 安全组中不会授予这些资源之间的访问权限。这是因为安全组规则 分别应用于每个资源 。因此,安全组需要“允许来自自身的访问”以允许连接。但是,由于您的 RDS 数据库配置为 public 访问,这实际上不起作用,因为 RDS 数据库将有一个 public IP 地址。
鉴于您的数据库 public 可以访问,其 DNS 名称将解析为 public IP 地址。因此,你的配置应该是:
- 为 Amazon EC2 实例 (
App-SG
) 创建一个安全组,允许适当的入站权限(例如 HTTP、SSH)并具有默认的出站规则(允许所有) - 为 Amazon RDS 数据库 (
DB-SG
) 创建一个安全组,允许来自 EC2 实例的 public IP 的入站访问 地址 - 但是,如果 RDS 数据库 未 配置为 public 访问,您将配置安全组以允许来自
App-SG
的入站访问。也就是说,DG-SG
将具体指代App-SG
。