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

能否通过Compute Engine VM的内外IP连接Cloud SQL Proxy?连接异常咨询

Cloud SQL Proxy无法通过VM内部IP访问的问题解答

问题背景

你正在测试的配置:

  • Cloud SQL实例(testsql-1)位于区域X、可用区A;
  • Compute Engine虚拟机(TestVM-1)位于同一区域X、可用区A,操作系统为CentOS 7;
  • 该Compute Engine VM在非默认端口(9090)运行Cloud SQL Proxy。

你遇到的情况:

  • 可以通过命令 mysql -h 127.0.0.1 --port 9090 -u testuser -D testDB -p 从TestVM-1登录到testsql-1;
  • 无法使用TestVM-1的内部IP执行上述命令,执行后报错;
  • 能够telnet 127.0.0.1 9090,但telnet <VM内部IP> 9090 返回连接被拒绝的错误。

解答:这是预期行为,原因如下

这确实是Cloud SQL Proxy的默认行为,核心原因和它的监听地址配置有关:

  1. 默认仅监听本地回环地址
    Cloud SQL Proxy在默认启动时,只会绑定到127.0.0.1(本地回环接口),也就是说它只接受来自VM本机的连接请求,不会监听VM的内部IP(或外部IP)对应的网络接口。这就是为什么你用127.0.0.1能正常连接,但用内部IP会被拒绝——Proxy根本没在那个接口的9090端口上监听连接。

  2. 验证监听状态的方法
    你可以在TestVM-1上执行以下命令查看Proxy的监听端口情况:

netstat -tulpn | grep 9090
# 或者用CentOS 7推荐的ss命令
ss -tulpn | grep 9090

执行后你会看到类似127.0.0.1:9090的监听记录,而不是0.0.0.0:9090(0.0.0.0表示监听所有网络接口),这直接证明了Proxy没有在内部IP接口上提供服务。

  1. 如果需要通过内部IP访问的解决方案(可选)
    如果你确实需要让同一VPC内的其他虚拟机通过TestVM-1的内部IP访问Cloud SQL,可以在启动Cloud SQL Proxy时指定--address参数,让它监听所有接口或者指定的内部IP:
  • 监听所有网络接口(允许本机、内部IP、外部IP的连接,注意防火墙限制):
    cloud-sql-proxy --address 0.0.0.0 --port 9090 your-project-id:region:testsql-1
    
  • 仅监听VM的内部IP(更安全,只允许同一VPC内的实例通过内部IP访问):
    cloud-sql-proxy --address 10.128.0.XX --port 9090 your-project-id:region:testsql-1
    
    (把10.128.0.XX替换成你的TestVM-1的实际内部IP)

注意:修改监听配置后,要确保VM的防火墙规则允许目标来源(比如同一VPC的IP段)访问9090端口,遵循最小权限原则避免不必要的暴露。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 08:29:12