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

如何解绑3306端口?Cloud SQL Proxy重启端口占用问题求助

解决Cloud SQL Proxy端口占用的两种实用方案

嘿,刚上手Google Cloud遇到这种端口冲突问题太常见了,我给你整理了两个靠谱的解决办法:

方案1:快速清理占用3306端口的残留进程

既然这次是Cloud SQL Proxy自己的进程没彻底关掉导致端口被占,你可以按以下步骤操作:

  • 先在终端执行命令,找出占用3306端口的进程PID:
    lsof -i :3306
    
    你会看到类似这样的输出,重点看PID列的数字:
    COMMAND   PID        USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
    cloud_sql 1234 ludovico    3u  IPv4 0x123456789abcdef0      0t0  TCP localhost:mysql (LISTEN)
    
  • 接着用强制终止命令杀掉该进程(把<PID>替换成你查到的数字):
    kill -9 <PID>
    
    完成后再重启Cloud SQL Proxy用3306端口就正常了。

方案2:从根源避免端口冲突(更推荐长期使用)

为了以后不再反复处理端口解绑问题,你可以改用Unix套接字连接,或者让Proxy自动分配端口:

选项A:Unix套接字连接(完全无需端口)

启动Proxy时指定套接字文件路径,彻底摆脱端口依赖:

./cloud_sql_proxy -instances="my-instance-274702:us-central1:fms"=unix:/tmp/cloudsql

然后修改Django的settings.py数据库配置:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': '你的数据库名称',
        'USER': '数据库用户名',
        'PASSWORD': '数据库密码',
        'HOST': '/tmp/cloudsql/my-instance-274702:us-central1:fms',
        'PORT': '',  # 留空即可
    }
}

这种方式更稳定,也不会和本地MySQL或其他服务抢端口。

选项B:让Proxy自动分配可用端口

如果还是想用TCP连接,启动时把端口设为0,Proxy会自动选一个未被占用的端口:

./cloud_sql_proxy -instances="my-instance-274702:us-central1:fms"=tcp:0

启动后终端会显示实际使用的端口(比如127.0.0.1:54321),把Django配置里的PORT改成这个数值就行。

小补充

之前用Ctrl + C终止Proxy时,偶尔会出现进程未完全退出的情况(比如后台残留子进程),这就是端口一直被占的原因。方案1能快速解决当前问题,而方案2从根源上避免了冲突,更适合长期使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 12:12:46