如何将SQLYOG连接至私有子网内的非公开AWS RDS实例?
连接SQLYOG到私有子网内的AWS RDS实例
方案一:通过堡垒机(跳板机)建立SSH隧道连接
这是私有RDS访问的标准可行方案,你之前尝试堡垒机没成功,大概率是配置细节没到位,以下是可落地的步骤:
前置准备:
- 堡垒机部署在公有子网,带公网IP,安全组允许你的本地IP访问22端口(SSH)
- 堡垒机安全组开放对应数据库端口(比如MySQL的3306),允许访问RDS实例
- RDS安全组添加规则:允许堡垒机的私有IP访问数据库端口
SQLYOG具体配置:
- 打开SQLYOG新建连接,切换到SSH标签页
- 勾选「使用SSH隧道」,填写:
- SSH主机:堡垒机的公网IP/域名
- SSH用户名:堡垒机的登录账号(比如
ec2-user) - 认证方式:选密码或密钥文件(密钥选
.pem或.ppk格式文件)
- 切回常规标签页,填写:
- 主机地址:RDS的私有IP或内网端点(不要用公网端点,私有子网RDS无此配置)
- 端口:RDS的数据库端口(默认3306)
- 用户名/密码:RDS的数据库账号和密码
- 点击「测试连接」,没问题就保存连接
排错要点:
- 先在堡垒机上测试连通性:执行
mysql -h RDS内网端点 -P 3306 -u 账号 -p,确认堡垒机能连RDS - 本地用终端测SSH:
ssh -i 密钥文件 账号@堡垒机公网IP,确保本地能连堡垒机 - 检查安全组/网络ACL:本地→堡垒机22端口;堡垒机→RDS数据库端口;双向流量都要允许
- 先在堡垒机上测试连通性:执行
方案二:用AWS SSM端口转发(无需公网堡垒机)
如果不想维护公有子网的堡垒机,这个方案更安全,不需要堡垒机有公网IP:
前置准备:
- 私有子网内的EC2(作为中转)已装SSM Agent,IAM角色附
AmazonSSMManagedInstanceCore权限 - 本地安装AWS CLI并配置好能访问SSM的权限
- RDS安全组允许中转EC2的私有IP访问数据库端口
- 私有子网内的EC2(作为中转)已装SSM Agent,IAM角色附
操作步骤:
- 本地终端跑端口转发命令:
这条命令会把本地3306端口转发到RDS的3306端口,通过SSM会话中转aws ssm start-session --target 中转EC2实例ID --document-name AWS-StartPortForwardingSession --parameters '{"portNumber": ["3306"], "localPortNumber": ["3306"], "target": ["RDS内网端点:3306"]}' - 打开SQLYOG新建连接,常规标签页填:
- 主机地址:
127.0.0.1 - 端口:
3306 - 用户名/密码:RDS的数据库账号和密码
- 主机地址:
- 测试连接即可
- 本地终端跑端口转发命令:
提示:命令运行期间别关终端,要后台运行可以加
nohup或者用screen/tmux
关于网络负载均衡(NLB)的说明
私有子网的RDS不能直接作为NLB的目标(RDS是托管服务,不支持挂载到NLB),所以这个方案从原理上就行不通,不用再尝试。
内容的提问来源于stack exchange,提问作者saad jaha kayani
相关产品推荐
相关产品推荐

