Navicat连RDS报错2003或超时,八成因白名单IP填错或外网地址未开通:须填ifconfig.me查询的公网IP(非内网地址),且外网地址需在RDS控制台确认已激活并填入Host字段,不可用内网域名。
Navicat连RDS报错2003或超时,先查白名单和外网地址
八成问题卡在这两步:ip没加对,或者外网地址根本没开出来。别急着改密码或重装navicat。
查自己该填哪个IP进白名单:ifconfig.me 页面显示的才是有效公网IP;ipconfig 或 ifconfig 看到的 192.168.x.x 或 10.x.x.x 是内网地址,填进去肯定连不上。
- 公司/校园网用户,整个出口可能共用一个公网IP,得找网管确认,不能只看自己设备
- 家用宽带IP常变动,重启光猫就变,建议连接前实时查一次,填完立刻测
- 测试环境临时填
0.0.0.0/0可行,但生产环境严禁这么干
外网地址申请后不是立刻生效:控制台点“申请外网地址”后状态会是“正在开通”,需等1–3分钟;务必刷新页面,确认“外网地址”字段已显示非空域名(如 rm-xxx.mysql.rds.aliyuncs.com);Host 字段必须填这个,不能填内网地址(如 rm-xxx.vpc.rds.aliyuncs.com),否则DNS解析失败。
Navicat里Host、Port、User填错的高频组合
填对了外网地址仍连不上?大概率是这几个字段之一配错了,尤其 MySQL 8.0+ 默认认证插件变了。
-
Host:必须是外网域名,不是IP,也不是控制台“内网地址”标签页里的地址 -
Port:默认填3306,除非你创建RDS时手动改过端口(极少见) -
User Name:必须是阿里云控制台“账号管理”里新建的账号,不是root,也不是实例ID;注意大小写敏感 -
Password:若含@、$、!等特殊字符,部分老版本Navicat会截断,建议先用纯字母数字密码验证通路 - 高级选项里的SSH和HTTP隧道默认关掉,除非你真配置了跳板机——开了却没配,反而导致连接失败
telnet 3306不通?重点查安全组和系统防火墙
能ping通外网地址,但 telnet rm-xxx.mysql.rds.aliyuncs.com 3306 卡住或拒绝,说明TCP层被拦了。
- 阿里云安全组:进方向规则必须有
TCP协议、端口范围精确为3306、源IP设为你当前公网IP(或临时0.0.0.0/0) - 本地系统防火墙:Windows检查是否拦截出站3306;Mac/Linux查
ufw或firewalld是否放行 - RDS本身不依赖服务器系统防火墙(它跑在阿里云托管环境),所以不用登上去关iptables
注意:有些企业网络或代理会屏蔽3306,可换手机热点再试一次,快速判断是不是本地网络策略问题。
报错1130 “Host xxx is not allowed to connect” 怎么修
这个错误不是RDS的锅,而是你用的MySQL账号权限没放开——RDS默认不允许任何账号从公网连接,必须显式授权。
- 登录RDS控制台 → “账号管理” → 找到你要用的账号 → 编辑 → 把“主机”字段改成
%(允许所有IP)或具体IP段 - 如果用的是自建ECS上的MySQL而非RDS,才需要进MySQL执行
UPDATE mysql.user SET host='%' WHERE user='xxx'; FLUSH PRIVILEGES; - RDS不支持直接连
mysql库改表,所有权限操作必须走控制台或DMS - 账号创建时若选了“仅本应用访问”,也会导致1130,必须改为“任意主机”
真正容易被忽略的点是:RDS账号的“主机”字段和白名单IP是两套独立机制,缺一不可——白名单放行网络层,账号主机设置放行数据库层。


















