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

如何解决Google Colab连接本地MySQL数据库超时、连接被拒绝问题

故障排查与解决方法

核心问题说明

你当前的操作存在两个底层逻辑错误:

  • 127.0.0.1是Colab运行环境自身的本地回环地址,和你本地部署MySQL的电脑没有任何关联,因此必然返回连接拒绝报错。
  • 你查询到的公网IP是你的网络出口(路由器/运营商网关)的公共地址,你的个人电脑没有直接暴露在公网中,网关默认不会将3306端口的访问请求转发到你内网的电脑上,因此直接访问公网IP会超时。

可行解决方法

方案1:使用ngrok内网穿透(推荐用于临时测试)

这是无需修改路由器配置的最快方案:

  1. 本地电脑安装ngrok并完成账号认证
  2. 本地终端执行命令开启TCP隧道,转发本地MySQL的3306端口:
    ngrok tcp 3306
  3. 执行后ngrok会返回隧道地址,格式为tcp://[隧道主机]:[隧道端口],例如tcp://0.tcp.ngrok.io:12345
  4. 修改Colab中的连接字符串,替换对应参数即可:
!pip install PyMySQL
!pip install mysql-connector-python
from sqlalchemy import create_engine
import pandas as pd
# 替换为ngrok返回的主机和端口,注意删除原代码中密码后的多余>符号
engine = create_engine("mysql+pymysql://bisma:1234@[隧道主机]:[隧道端口]/emoji_pwd")
query= 'select * from users'
df = pd.read_sql(query,engine)

方案2:路由器端口映射(适合长期使用)

如果你有路由器管理权限,可以做端口映射:

  • 进入路由器后台,找到「虚拟服务器/端口转发」配置项,将公网3306端口(如果运营商封了3306可以换用33060等其他端口)转发到你本地电脑的局域网IP的3306端口
  • 确认本地电脑防火墙开放3306端口的入站规则

补充校验项

  • 你之前的MySQL授权是给root用户的,你代码中使用的用户名是bisma,需要补充对bisma用户的授权:
    GRANT ALL ON emoji_pwd.* TO 'bisma'@'%'; FLUSH PRIVILEGES;
  • 确认你的MySQL配置中bind-address=0.0.0.0已经生效,且重启了MySQL服务

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 22:48:01