登录
首页 >  Golang >  Go问答

无法从 ec2 连接到 rds

来源:stackoverflow

时间:2024-04-17 14:09:34 161浏览 收藏

学习知识要善于思考,思考,再思考!今天golang学习网小编就给大家带来《无法从 ec2 连接到 rds》,以下内容主要包含等知识点,如果你正在学习或准备学习Golang,就都不要错过本文啦~让我们一起来看看吧,能帮助到你就更好了!

问题内容

我无法从 ec2 实例连接到我的 rds 实例,我收到的错误是连接:连接超时。但是,我可以从本地计算机上运行的 mysql 工作台进行连接。

  1. RDS 实例设置为公开可用
  2. RDS 实例和 ec2 实例位于同一安全组
  3. 安全组配置为允许来自任何地方的连接时仍然会产生相同的错误
  4. 当从 ec2 运行到 rds 时,traceroute 为所有内容输出 ***,但是当从本地计算机运行时提供正常输出,提供显示其未被防火墙阻止的输出
  5. RDS 实例和 ec2 实例位于同一可用区,而不是多可用区 rds
  6. 使用以下 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 数据库配置为公共访问,因此这实际上不起作用,因为 RDS 数据库将具有公共 IP 地址。

鉴于您的数据库可公开访问,其 DNS 名称将解析为公共 IP 地址。因此,您的配置应该是:

  • Amazon EC2 实例 (App-SG) 创建一个安全组,该安全组允许适当的入站权限(例如 HTTP、SSH)并具有默认的出站规则(全部允许)
  • Amazon RDS 数据库 (DB-SG) 创建一个安全组,以允许从 EC2 实例的公共 IP 地址进行入站访问
  • 但是,如果 RDS 数据库配置为公共访问,您可以将安全组配置为允许来自 App-SG 的入站访问。也就是说,DG-SG 将特指 App-SG

终于介绍完啦!小伙伴们,这篇关于《无法从 ec2 连接到 rds》的介绍应该让你收获多多了吧!欢迎大家收藏或分享给更多需要学习的朋友吧~golang学习网公众号也会发布Golang相关知识,快来关注吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>