在AWS中,我设置了一个带有堡垒主机的VPC。堡垒主机是一个具有公共地址槽的EC2实例,您可以将其SSH连接到VPC上的任何其他服务器。
我在VPC中创建了一个RDS MySQL实例,我想使用MySQL workbench连接到它。我已按照详细步骤here进行操作,但在“步骤6:设置远程SSH配置”中,它要求我“提供Amazon EC2实例的公共DNS”(即堡垒主机)。
然后,MySQL工作台会检查该服务器上的某些MySQL资源。但是,在我看来这是不正确的,因为我提供了堡垒主机的地址,它没有安装MySQL。结果,最后两次检查“检查启动/停止命令的位置”和“检查MySQL配置文件”然后失败。然后我尝试使用RDS MySQL实例的端点地址,但没有成功(因为它在私有子网中,因此不能公开寻址)。
似乎有很多人已经开始运行,但我在这里做错了什么?
答案 0 :(得分:34)
使用我能够连接。但是,我没有在我的设置中使用VPC。希望这可以帮助。祝你好运!
答案 1 :(得分:11)
由于您使用的是VPC, 这是为了仅接受来自子网的连接的配置方式:
添加新规则以允许来自您的私有子网的所有ips在端口上 3306
例如:规则INBOUND 3306(MYSQL)172.33.11.0/24
使用mysql workbench tcp / ssh它会起作用(关注AndrewSmiley 回答)。
答案 2 :(得分:5)
我建议使用SSH隧道:
答案 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
这篇文章更详细地解释了这个方法; 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}并使用您的凭据进行托管。
跟随图片,您应该可以连接。
答案 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隧道也适用于两个安全组。