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

时间:2013-10-02 03:13:47

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

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

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

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

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

似乎有很多人已经开始运行,但我在这里做错了什么?

7 个答案:

答案 0 :(得分:34)

几个星期以来,我一直在努力寻找类似的东西。几分钟前就搞清楚了。

  1. 在mysql workbench中,创建一个新的服务器实例。
  2. 对于远程主机地址,请输入您的终端地址(即xxxxxx.us-east-1.rds.amazonaws.com)
  3. 对于连接方法,请选择“基于SSH的标准TCP / IP”
  4. SSH主机名是EC2实例的公共DNS
  5. 我指定了ec2-user(我认为它因EC2实例类型而异)作为用户名,然后指定了与实例正在使用的密钥对相对应的下载密钥文件。
  6. mysql主机名是RDS实例的端点。
  7. 用户名是RDS实例的用户名(即ebroot)
  8. 使用我能够连接。但是,我没有在我的设置中使用VPC。希望这可以帮助。祝你好运!

答案 1 :(得分:11)

由于您使用的是VPC, 这是为了仅接受来自子网的连接的配置方式:

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

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

  3. 使用mysql workbench tcp / ssh它会起作用(关注AndrewSmiley 回答)。

答案 2 :(得分:5)

我建议使用SSH隧道:

  1. 创建到堡垒主机的putty会话
  2. 在连接下 - > SSH - >隧道,指定源端口:3306,目标:yourRDSendpointname:3306
  3. 不要忘记点击添加!
  4. 使用这些设置连接到堡垒主机
  5. 在MySQL工作台中添加一个新连接,并将其指向您的localhost端口3306(假设您没有在本地客户端计算机上的3306上运行任何内容)
  6. 输入您的RDS实例的用户名和密码

答案 3 :(得分:1)

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

在mac / linux上这是命令(对于windows遵循以下链接中的说明):

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

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

  • 连接方法:标准TCP

  • 主机名:localhost

  • port 3306

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

答案 4 :(得分:1)

这是UBUNTU Mysql工作台的

您必须向与RDS链接的安全组添加入站规则,以接受来自堡垒/跳跃/任何实例(计算机)的端口3306上的请求。 机器应具有与其关联的公共IP。

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

要测试连接性,请运行:

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

替换{username},{password}并使用您的凭据进行托管。

跟随图片,您应该可以连接。

Pictorial representation of the details to be entered.

答案 5 :(得分:0)

这就是为我解决问题的原因。在RDS仪表板上,查看实例的安全组。单击此按钮将转到安全组页面。

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

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

答案 6 :(得分:0)

如果您想真正使用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隧道也适用于两个安全组。