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

MySQL启动报错:未更新PID文件,端口3306被占用求助

MySQL启动失败:端口3306被占用问题解决指南

我知道你已经把Stack Overflow上能找到的相关方案都试了个遍,但启动MySQL还是卡壳在同一个问题上。先看看你提供的.err日志里的核心信息:

2018-01-07T06:58:11.729500Z 0 [警告] 因/usr/local/var/mysql/文件系统不区分大小写,设置lower_case_table_names=2
2018-01-07T06:58:11.731659Z 0 [注意] InnoDB:互斥锁和读写锁使用GCC原子内置函数
2018-01-07T06:58:11.731673Z 0 [注意] InnoDB:使用事件互斥锁
2018-01-07T06:58:11.731679Z 0 [注意] InnoDB:GCC内置函数__atomic_thread_fence()用于内存屏障
2018-01-07T06:58:11.731682Z 0 [注意] InnoDB:压缩表使用zlib 1.2.3
2018-01-07T06:58:11.731969Z 0 [注意] InnoDB:缓冲池数量:1
2018-01-07T06:58:11.732068Z 0 [注意] InnoDB:使用CPU crc32指令
2018-01-07T06:58:11.733672Z 0 [注意] InnoDB:初始化缓冲池,总大小=128M,实例数=1,块大小=128M
2018-01-07T06:58:11.745339Z 0 [注意] InnoDB:缓冲池初始化完成
2018-01-07T06:58:11.761905Z 0 [注意] InnoDB:支持的最高文件格式为Barracuda
2018-01-07T06:58:11.906535Z 0 [注意] InnoDB:为临时表创建共享表空间
2018-01-07T06:58:11.906692Z 0 [注意] InnoDB:设置文件'./ibtmp1'大小为12 MB,正在物理写入文件,请等待...
2018-01-07T06:58:11.918639Z 0 [注意] InnoDB:文件'./ibtmp1'大小现在为12 MB
2018-01-07T06:58:11.919925Z 0 [注意] InnoDB:发现96个重做回滚段,96个重做回滚段处于活动状态
2018-01-07T06:58:11.919938Z 0 [注意] InnoDB:32个非重做回滚段处于活动状态
2018-01-07T06:58:11.920116Z 0 [注意] InnoDB:等待清理启动
2018-01-07T06:58:11.974340Z 0 [注意] InnoDB:5.7.20已启动;日志序列号129183358
2018-01-07T06:58:11.974571Z 0 [注意] InnoDB:从/usr/local/var/mysql/ib_buffer_pool加载缓冲池
2018-01-07T06:58:11.974744Z 0 [注意] 插件'FEDERATED'已禁用
2018-01-07T06:58:11.974853Z 0 [注意] InnoDB:缓冲池加载完成于180107 12:28:11
2018-01-07T06:58:11.983233Z 0 [注意] 在数据目录中找到ca.pem、server-cert.pem和server-key.pem,尝试使用它们启用SSL支持
2018-01-07T06:58:11.983254Z 0 [注意] 因数据目录中已有证书文件,跳过SSL证书生成
2018-01-07T06:58:11.983981Z 0 [警告] CA证书ca.pem为自签名
2018-01-07T06:58:11.984032Z 0 [注意] 因数据目录中已有密钥文件,跳过RSA密钥对生成
2018-01-07T06:58:11.989041Z 0 [注意] 服务器主机名(bind-address):'127.0.0.1';端口:3306
2018-01-07T06:58:11.989070Z 0 [注意] - '127.0.0.1'解析为'127.0.0.1'
2018-01-07T06:58:11.989136Z 0 [注意] 已在IP '127.0.0.1'上创建服务器套接字
2018-01-07T06:58:11.989166Z 0 [错误] 无法启动服务器:绑定TCP/IP端口:地址已被占用
2018-01-07T06:58:11.989169Z 0 [错误] 是否已有另一个mysqld服务器在端口3306运行?
2018-01-07T06:58:11.989199Z 0 [错误] 终止

从日志最后几行能直接锁定问题:端口3306已经被其他进程占用了,大概率是后台还跑着另一个MySQL实例,也可能是其他程序占了这个端口。给你几个落地的解决步骤:

  • 第一步:查清楚谁占了端口

    • Mac/Linux系统,终端执行:lsof -i :3306
    • Windows系统,命令提示符执行:netstat -ano | findstr :3306
      执行后会看到占用进程的PID和名称,先确认是不是mysqld或者其他程序。
  • 第二步:干掉占用端口的进程

    • Mac/Linux找到PID后,执行:kill -9 <你的PID>
    • Windows执行:taskkill /F /PID <你的PID>
      替换成实际查到的PID就行,-9和/F都是强制终止的参数,能确保进程彻底关掉。
  • 第三步:不想杀进程?那就改MySQL端口
    找到MySQL的配置文件(一般是my.cnf或my.ini),找到port=3306这一行,改成3307这类未被占用的端口,保存后重启MySQL就可以了。

按这个流程走,应该就能解决启动失败的问题了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:41:07