You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法连接AWS RDS实例,执行mysql命令触发ERROR 2002错误

解决AWS RDS未开启公网访问时的连接失败问题(ERROR 2002 (HY000): 115)

核心原因

你创建的RDS实例未开启公网访问,意味着该实例仅拥有VPC私有网络地址,无法直接通过公网路由访问。你的Ubuntu电脑处于公网环境,直接执行mysql命令无法到达RDS实例的私有网络,因此抛出连接超时/不可达错误(错误码115通常对应连接超时)。

具体解决步骤

1. 选择合适的访问方式(二选一)

方式一:将Ubuntu机器接入VPC网络

  • 把你的Ubuntu电脑通过AWS VPN Client、Direct Connect或AWS Client VPN连接到RDS实例所在的VPC,此时你的电脑会获得VPC内的私有IP,即可直接通过RDS的端点连接。
  • 或者在同一VPC内创建一台EC2 Ubuntu实例,通过SSH登录到该EC2后,再执行mysql命令连接RDS。

方式二:使用AWS Systems Manager(SSM)端口转发(无需开公网)

这是无需修改RDS公网配置的便捷方式:

  1. 确保前置条件:
    • RDS实例所在VPC已创建SSM所需的接口端点:com.amazonaws.<region>.ssm、com.amazonaws.<region>.ec2messages、com.amazonaws.<region>.ssmmessages
    • 你的AWS IAM用户/角色拥有以下权限:ssm:StartSession、rds-db:connect(针对目标RDS实例)
  2. 生成IAM认证token(因你启用了IAM认证):
    aws rds generate-db-auth-token --hostname <db-conn>.amazonaws.com --port 3306 --username admin --region <你的AWS区域>
    
  3. 启动SSM端口转发:
    aws ssm start-session --target <同一VPC内的EC2实例ID> --document-name AWS-StartPortForwardingSessionToRemoteHost --parameters '{"host":["<db-conn>.amazonaws.com"],"portNumber":["3306"],"localPortNumber":["3306"]}' --region <你的AWS区域>
    
  4. 在新终端连接本地转发端口:
    保持上述端口转发会话运行,打开新终端执行:
    mysql -h 127.0.0.1 -P 3306 -u admin --ssl-mode=REQUIRED -p
    
    注意:此处密码需填入步骤2生成的IAM认证token(若同时启用了密码认证,可尝试直接输入RDS密码)。

2. 验证安全组配置(补充检查)

即使你已添加IP入站规则,需确认:

  • 安全组的入站规则是针对VPC私有IP段(而非你公网IP),因为未开公网的RDS仅接受VPC内部流量
  • 入站规则的端口确实是3306,协议为TCP

3. 确认IAM认证配置(若启用)

若你启用了RDS IAM认证,需确保:

  • 目标用户admin已关联IAM认证权限(通过RDS控制台或aws rds add-db-instance-iam-role命令)
  • 连接时必须使用--ssl-mode=REQUIRED参数,因为IAM认证依赖SSL加密

内容的提问来源于stack exchange,提问作者nbz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 21:25:24