使用 MySQL Workbench 安全组通过 EC2 实例连接到 Amazon RDS 实例

Posted

技术标签:

【中文标题】使用 MySQL Workbench 安全组通过 EC2 实例连接到 Amazon RDS 实例【英文标题】:Connecting to Amazon RDS instance through EC2 instance using MySQL Workbench Security groups 【发布时间】:2018-12-15 15:43:06 【问题描述】:

我很难将 mysql Workbench 连接到 RDS。我联系了亚马逊支持,他们告诉了我这个

“我已经查看了 EB 环境和 SG 的配置,它们现在处于良好状态,唯一剩下的项目,因为我看到它无法远程连接到 RDS DB,SG sg- 882213c3 需要添加另一个规则以允许从计算机与 mysql 客户端连接。也许,允许 0.0.0.0/0 到 TCP 端口 3306 以进行临时访问或从计算机的源 IP 访问。"

所以我做的是这个

但连接仍然失败

前面的步骤是

我创建了名为east-mysql2-instance1 的新数据库实例。对于 east-mysql2-instance1 安全组设置为 rds-launch-wizard (sg-882213c3),我确实将入站修改为 Source sg-882213c3 (rds-launch-wizard)。但它不会让我将类型更改为 Mysql/Aurora 它停留在自定义 TCP 规则。

对于 EC2 实例,我有 2 个正在运行的实例,并且我将两个安全组都更改为 rds-launch-wizard 和 awseb-e-bdbjjgxvzd-stack-AWSEBSecurity

我终止了我的旧环境并创建了一个名为 Borroup-env-1 的新环境,我将环境的 EC2 安全组更改为 awseb-e-bdbjjgxvzd-stack-AWSEBSecurityGroup-1PTJG896MEOYR 和 rds-launch-wizard。 我更改了环境属性并添加了 RDS_DB_NAME、RDS_HOSTNAME、RDS_PASSWORD、RDS_PORT、RDS_USERNAME

【问题讨论】:

【参考方案1】:

从您的第二个屏幕截图看来,您正在设置的连接是:

    从 Mac 桌面通过 SSH 连接到 ec2 实例 从 ec2 实例连接到 RDS

如果这是您想要实现的情况,我不会留下允许来自 0.0.0.0/0 的 3306 的规则。这允许世界上的任何 IP 地址连接到端口 3306 - 一个众所周知的端口。此外,该建议似乎建议将该规则针对 RDS 实例? Overkill - 只需要允许从您的 EC2 实例或其子网访问。

我要采取的第一步是在终端上使用 SSH 来验证您是否可以通过 SSH 从您的 mac 连接到 EC2 实例 - 如果这不起作用,则无需查看 EC2 和 RDS 之间的 SG 和规则。一旦工作正常,您就可以继续解决从 ec2 到 RDS 的连接问题。正如 John 上面提到的,如果 RDS 和 EC2 在同一个 VPC 中,您可以设置一个 SG,允许从 EC2 所在的子网访问 RDS 实例。

作为替代解决方案,您还可以设置为允许直接访问 RDS 实例,而无需通过 EC2。请参阅此处的公共可访问性和子网要求:https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_VPC.WorkingWithRDSInstanceinaVPC.html 取决于您想要什么样的设置...

如果 EC2 和 RDS 不在同一个 VPC 但在同一个区域,您可能需要查看设置 VPC 对等:https://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/vpc-peering.html 如果他们的 EC2 是 RDS 不在同一个区域或同一个 VPC 中,您可能需要设置区域间 VPC 对等互连:https://aws.amazon.com/about-aws/whats-new/2017/11/announcing-support-for-inter-region-vpc-peering/

【讨论】:

【参考方案2】:

听起来您希望从 Amazon EC2 实例连接到 Amazon RDS 实例。假设它们都在同一个 VPC 中,最简单的配置方法是:

创建一个 App-SG 安全组并将其与 EC2 实例 关联。授予您登录/使用实例所需的任何访问权限。 创建 RDS-SG 安全组并将其与 RDS 数据库关联。允许App-SG安全组在端口 3306 (MySQL/Aurora) 上进行入站访问。

这基本上表示任何与 App-SG 关联的资源都将被允许访问与 RDS-SG 关联的任何资源。

如果这不起作用,则需要配置其他东西(除了安全组)。

【讨论】:

以上是关于使用 MySQL Workbench 安全组通过 EC2 实例连接到 Amazon RDS 实例的主要内容,如果未能解决你的问题,请参考以下文章

无法从 MySQL Workbench 连接到 RDS MySQL 数据库

MySQL 错误代码:更新期间的 1175(MySQL-Workbench 与控制台)

MySQL Workbench 的安全设置

如何避免 MySQL Workbench 错误代码:此更新期间出现 1175 *无需*禁用“安全更新”

无法通过 Workbench 连接到 RDS MySQL 数据库

MySQL 错误代码:在 MySQL Workbench 中更新期间出现 1175