28

在 AWS 中,我设置了一个带有堡垒主机的 VPC。堡垒主机是具有公共地址槽的单个 EC2 实例,您可以通过该地址 SSH 连接到 VPC 上的任何其他服务器。

我在 VPC 中创建了一个 RDS MySQL 实例,我想使用 MySQL 工作台连接到它。我已按照此处详述的步骤进行操作,但是在“第 6 步:设置远程 SSH 配置”中,它要求我“提供 Amazon EC2 实例的公共 DNS”(即堡垒主机)。

MySQL 工作台然后会检查该服务器上的某些 MySQL 资源。但是,我认为这是不正确的,因为我提供了堡垒主机的地址,该地址没有安装 MySQL。结果,最后两次检查“检查启动/停止命令的位置”和“检查 MySQL 配置文件”然后失败。

然后我尝试使用 RDS MySQL 实例的端点地址,但没有成功(因为它位于私有子网中,因此不可公开寻址)。

似乎很多人都已经启动并运行了这个,但是我在这里做错了什么?

4

7 回答 7

38

几个星期以来,我一直在为类似的事情苦苦挣扎。几分钟前才想通。

  1. 在 mysql 工作台中,创建一个新的服务器实例。
  2. 对于远程主机地址,输入您的端点地址(即 xxxxxx.us-east-1.rds.amazonaws.com)
  3. 对于连接方法,选择“标准 TCP/IP over SSH”
  4. SSH 主机名是您的 EC2 实例的公共 DNS
  5. 我指定了 ec2-user(我相信它因 EC2 实例类型而异)作为用户名,然后指定了与实例使用的密钥对相对应的下载密钥文件。
  6. mysql 主机名是 RDS 实例的端点。
  7. 用户名是 RDS 实例的用户名(即 ebroot)

使用它我能够连接。但是,我没有在我的设置中使用 VPC。希望这可以帮助。祝你好运!

于 2013-11-13T21:05:06.560 回答
12

由于您使用的是 VPC,因此应将其配置为仅接受来自子网的连接:

  1. 选择您的数据库实例使用的 VPC 安全组
  2. 添加新规则以允许端口 3306 上来自您的私有子网的所有 ip

    例如:规则入站 3306 (MYSQL) 172.33.11.0/24

  3. 使用 mysql workbench tcp/ssh 它将工作(按照 AndrewSmiley 回答)。

于 2013-12-19T09:41:40.020 回答
6

我建议使用 SSH 隧道:

  1. 创建到堡垒主机的腻子会话
  2. 在 Connection --> SSH --> Tunnels 下,指定源端口:3306,目标:yourRDSendpointname:3306
  3. 不要忘记点击添加!
  4. 使用这些设置连接到堡垒主机
  5. 在 MySQL 工作台中添加一个新连接并将其指向您的本地主机端口 3306(假设您没有在本地客户端机器上的 3306 上运行任何东西)
  6. 输入您的 RDS 实例的用户名和密码
于 2013-12-04T21:30:38.957 回答
1

如果您想真正使用 AWS 的 VPC 连接并且不允许公共 IP,请执行以下操作。

如果您有一个同时分配了 EC2 和 RDS 的安全组,则在 TCP 上为 mysql 3306 添加入站规则,但在源字段中不要输入 IP 或子网,而是输入实际的安全组 ID。即 sg-9829f3d2。

我个人在 VPC 上有两个安全组。

首先,安全组 1 被 EC2 实例使用,并且只允许 EC2 所需的端口,即 80 和 22。

第二,安全组 2 仅由 RDS 实例使用,并且有一个允许 mysql (3302) 的规则,并且源字段设置为安全组 1 的 id。

所有 Mysql 工作台 SSH 隧道也适用于这两个安全组。

于 2015-06-10T17:04:38.767 回答
1

您可以在 Bastion 主机(EC2 实例)中创建 SSH 隧道,以将端口从本地计算机转发到远程 RDS 实例。

在 mac/linux 上,这是命令(对于 windows,请按照以下链接中的说明进行操作):

ssh -L 3306:myinstance.123456789012.us-east-1.rds.amazonaws.com:3306  your_c2_ip

然后您可以使用以下设置与工作台连接:

  • 连接方式:标准TCP

  • 主机名:本地主机

  • 端口 3306

这篇文章更详细地解释了它的方法; https://userify.com/blog/howto-connect-mysql-ec2-ssh-tunnel-rds/

于 2017-05-14T14:33:28.220 回答
1

这是针对 UBUNTU Mysql 工作台的

您必须向与 RDS 链接的安全组添加入站规则,以接受来自 bastion/jump/any 实例(机器)的端口 3306 上的请求。这台机器应该有一个与之关联的公共 IP。

在尝试通过 MYSQL 工作台设置 SSH 隧道之前,请先在您的机器上确认是否可以连接 RDS。

要测试连接运行:

mysql -u{username} -p{password} -h ***-db-***.cmmaberpdqoc.***.rds.amazonaws.com -P 3306

将 {username}、{password} 和主机替换为您的凭据。

按照图片,您应该能够连接。

要输入的详细信息的图示。

于 2018-12-25T13:42:29.427 回答
0

这就是为我解决问题的原因。在 RDS 仪表板上查看您的实例的安全组。单击它,它将带您进入安全组页面。

虽然它会为入站和出站点击编辑显示“所有流量”,并确保来源显示我的 IP。我不建议使用所有 IP,因为这会向 Internet 上的任何人开放。如果您没有静态 IP,请确保在连接停止工作后刷新此字段。

在此之后,我能够连接到 AWS RDS T2 实例。

于 2015-01-24T10:27:43.293 回答