Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用MySQL Workbench通过EC2实例连接Amazon RDS实例_Mysql_Amazon Web Services_Ssh_Amazon Rds_Amazon Vpc - Fatal编程技术网

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

使用MySQL Workbench通过EC2实例连接Amazon RDS实例,mysql,amazon-web-services,ssh,amazon-rds,amazon-vpc,Mysql,Amazon Web Services,Ssh,Amazon Rds,Amazon Vpc,在AWS中,我用堡垒主机设置了一个VPC。bastion主机是一个带有公共地址的单个EC2实例,您可以通过该实例SSH连接到VPC上的任何其他服务器 我已经在VPC中创建了一个RDS MySQL实例,我想使用MySQL workbench连接到它。我已经遵循了详细的步骤,但是在“步骤6:设置远程SSH配置”中,它要求我“提供Amazon EC2实例(即bastion主机)的公共DNS” MySQL workbench然后检查该服务器上的某些MySQL资源。但是,我认为这是不正确的,因为我提供了b

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

我已经在VPC中创建了一个RDS MySQL实例,我想使用MySQL workbench连接到它。我已经遵循了详细的步骤,但是在“步骤6:设置远程SSH配置”中,它要求我“提供Amazon EC2实例(即bastion主机)的公共DNS”

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

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


似乎很多人都已经开始运行了,但我做错了什么呢?

我已经为类似的事情挣扎了好几个星期了。几分钟前我就想出来了

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

  • 用这个我就可以连接了。但是,我没有在设置中使用VPC。希望这有帮助。祝你好运

    我建议使用SSH隧道:

  • 为堡垒主机创建putty会话
  • 在连接-->SSH-->隧道下,指定源端口:3306,目标:yourRDSendpointname:3306
  • 别忘了点击添加
  • 使用这些设置连接到bastion主机
  • 在MySQL workbench中添加一个新连接,并将其指向本地主机端口3306(假设您没有在本地客户端计算机上的3306上运行任何东西)
  • 输入RDS实例的用户名和密码
  • 由于您使用的是专有网络, 这是它的配置方式,以便仅接受来自子网的连接:

  • 选择数据库实例使用的VPC安全组
  • 添加一个新规则以允许来自您的专用子网的所有IP位于端口上 3306

    ex:Rule INBOUND 3306(MYSQL)172.33.11.0/24

  • 使用mysql workbench tcp/ssh,它将工作(遵循AndrewSmiley) 答案)


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

    尽管入站和出站都会显示“所有流量”,但请单击编辑并确保消息来源显示我的IP。我不建议使用所有的IP,因为这会对互联网上的任何人开放。如果没有静态IP,请确保在连接停止工作后刷新此字段


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

    如果您想真正使用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 workbench SSH隧道也与这两个安全组一起工作。

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

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

    然后,您可以使用以下设置连接workbench:

    • 连接方式:标准TCP

    • 主机名:localhost

    • 端口3306
    这篇文章更详细地解释了它的方法; 这是针对UBUNTU Mysql工作台的

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

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

    要测试连接性,请运行:

    mysql -u{username} -p{password} -h ***-db-***.cmmaberpdqoc.***.rds.amazonaws.com -P 3306
    
    用您的凭据替换{username}、{password}和host

    按照图片进行操作,您应该能够连接


    不幸的是(事实上很幸运)我不再需要处理这个问题,我也不想花钱在RDS上检查它。但如果有人能告诉我这是可行的,我会接受答案。谢谢你的回复@AndrewSmiley。你救了我一天!谢谢。你能解释一下如何获得这个吗
    ips来自您的专用子网
    nm,这是您在Andrew回答的
    步骤1
    中创建的实例的专用IP使用我的ec2专用子网/32不起作用,但我的ec2专用子网/24起作用。我没有在文档中看到这一点,但我对这一点是新手。谢谢
    mysql -u{username} -p{password} -h ***-db-***.cmmaberpdqoc.***.rds.amazonaws.com -P 3306