移动端连接Google Cloud MySQL超时问题求助
解决Google Cloud MySQL仅本地WiFi可连接的问题
问题描述
开发的Kivy App连接Google Cloud MySQL数据库时,仅在自身WiFi环境下能正常连接,切换其他网络出现连接超时错误,核心报错:
mysql.connector.errors.InterfaceError: 2003: Can't connect to MySQL server on '35.202.36.237:3306' (110 Connection timed out)
解决步骤
1. 检查Cloud SQL授权网络配置
- 登录Google Cloud控制台,找到你的Cloud SQL实例
- 进入「连接」标签页,查看「授权网络」列表
- 这里大概率只添加了你家WiFi的公网IP,其他网络的IP不在列表中,导致被Cloud SQL拦截
- 临时测试:添加
0.0.0.0/0(允许所有IP连接),保存后测试其他网络是否能连接(注意:此配置不安全,测试完成后务必修改为指定IP范围) - 长期方案:获取你常用网络的公网IP(可通过搜索引擎查「我的IP」),添加到授权网络列表
- 临时测试:添加
2. 验证VPC防火墙规则
- 进入Google Cloud控制台的「VPC网络」->「防火墙规则」
- 确认存在允许TCP 3306端口入站流量的规则,且规则的「源IP范围」包含你要连接的网络IP
- 如果没有对应规则,创建新规则:
- 名称:允许MySQL入站
- 方向:入站
- 目标:指定目标标签(选择Cloud SQL实例的标签)或所有实例
- 来源IP范围:按需填写(如
0.0.0.0/0测试,或指定IP) - 协议和端口:指定tcp:3306
3. 检查MySQL用户的主机权限
- 用MySQL Workbench连接数据库,执行以下SQL:
SELECT user, host FROM mysql.user; - 查看App使用的数据库用户对应的
host字段,如果是特定IP而非%,则仅该IP能连接 - 修改用户权限(替换
your_username和your_password):ALTER USER 'your_username'@'%' IDENTIFIED BY 'your_password'; FLUSH PRIVILEGES;
4. 测试网络连通性
- 在其他网络的设备上,打开终端执行:
(Windows可使用nc -zv 35.202.36.237 3306telnet 35.202.36.237 3306,需先启用telnet功能) - 如果返回「连接成功」,说明网络通路正常,问题出在数据库配置;如果连接失败,继续排查防火墙或网络运营商限制
内容的提问来源于stack exchange,提问作者Ezequiel Albano
相关产品推荐
相关产品推荐

