无法在端口 3306 上启动 MySQL
Posted
技术标签:
【中文标题】无法在端口 3306 上启动 MySQL【英文标题】:Unable to start MySQL on port 3306 【发布时间】:2020-03-15 09:02:01 【问题描述】:我在 Windows 10 机器上安装了 XAMPP(Apache、mysql、php、phpmyadmin),地址为 D:\xampp
,我已经使用了至少 3 个月没有任何问题。
从今天开始,没有更改任何配置或安装任何东西,在尝试启动 MySQL 时,我在 XAMPP 控制台窗口中收到此错误:
20:17:05 [mysql] Status change detected: running
20:17:08 [mysql] Status change detected: stopped
20:17:08 [mysql] Error: MySQL shutdown unexpectedly.
20:17:08 [mysql] This may be due to a blocked port, missing dependencies,
20:17:08 [mysql] improper privileges, a crash, or a shutdown by another method.
20:17:08 [mysql] Press the Logs button to view error logs and check
20:17:08 [mysql] the Windows Event Viewer for more clues
20:17:08 [mysql] If you need more help, copy and post this
20:17:08 [mysql] entire log window on the forums
这在 mysql_error.log 中:
InnoDB: using atomic writes.
2019-11-19 20:17:05 0 [Note] InnoDB: Mutexes and rw_locks use Windows interlocked functions
2019-11-19 20:17:05 0 [Note] InnoDB: Uses event mutexes
2019-11-19 20:17:05 0 [Note] InnoDB: Compressed tables use zlib 1.2.11
2019-11-19 20:17:05 0 [Note] InnoDB: Number of pools: 1
2019-11-19 20:17:05 0 [Note] InnoDB: Using SSE2 crc32 instructions
2019-11-19 20:17:05 0 [Note] InnoDB: Initializing buffer pool, total size = 16M, instances = 1, chunk size = 16M
2019-11-19 20:17:05 0 [Note] InnoDB: Completed initialization of buffer pool
2019-11-19 20:17:06 0 [Note] InnoDB: 128 out of 128 rollback segments are active.
2019-11-19 20:17:06 0 [Note] InnoDB: Creating shared tablespace for temporary tables
2019-11-19 20:17:06 0 [Note] InnoDB: Setting file 'D:\xampp\mysql\data\ibtmp1' size to 12 MB. Physically writing the file full; Please wait ...
2019-11-19 20:17:06 0 [Note] InnoDB: File 'D:\xampp\mysql\data\ibtmp1' size is now 12 MB.
2019-11-19 20:17:06 0 [Note] InnoDB: Waiting for purge to start
2019-11-19 20:17:06 0 [Note] InnoDB: 10.4.8 started; log sequence number 300333; transaction id 171
2019-11-19 20:17:06 0 [Note] InnoDB: Loading buffer pool(s) from D:\xampp\mysql\data\ib_buffer_pool
2019-11-19 20:17:06 0 [Note] Plugin 'FEEDBACK' is disabled.
2019-11-19 20:17:06 0 [Note] Server socket created on IP: '::'.
2019-11-19 20:17:06 0 [ERROR] Can't start server: Bind on TCP/IP port. Got error: 10013: An attempt was made to access a socket in a way forbidden by its access permissions.
2019-11-19 20:17:06 0 [ERROR] Do you already have another mysqld server running on port: 3306 ?
2019-11-19 20:17:06 0 [ERROR] Aborting
但是,3306 端口似乎没有运行任何东西:
没有其他 MySQL 进程或服务在运行 运行 netstat 时不显示端口 3306 在 Windows 防火墙中未被阻止如果我将端口更改为随机端口(例如 10200),MySQL 将启动并正常工作。端口 3307 和 3308 不起作用,即使它们看起来也没有被使用,就像 3306 一样。
我尝试过但没有解决问题的方法:
(显然)重启 XAMPP 和 PC 清除D:\xampp\mysql\data
目录
XAMPP 的干净安装
以管理员身份运行
从 Window 的控制台启动 MySQL
重置防火墙规则
关闭防火墙/防病毒
正如我之前提到的,在一些不同的端口(如 10200)上运行 MySQL 是可行的。所以除了能够再次在 3306 上运行 MySQL 之外,我还想知道到底发生了什么以及它是如何发生的。任何想法表示赞赏!
编辑:有一个 Windows 更新 (KB4522741),但我不认为它有某种关联。
【问题讨论】:
尝试使用netstat -an | findstr 3306
看看是否有其他东西绑定到该端口。
@lainatnavi 已经尝试过并且刚刚再次确认。返回空,所以我想端口应该可用
检查这个 KBA support.microsoft.com/en-ca/help/4093046/… 看看是否是这种情况。同时运行netsh int ipv6 show dynamicport tcp
以查看保留端口的范围。无论如何以管理员身份运行服务应该能够绑定任何端口。
这可能也有帮助:github.com/docker/for-win/issues/1707
看来问题解决了。按照你指给我的方向,我用netsh interface ipv4 show excludedportrange protocol=tcp
检查了端口,确实保留了3306。然后我卸载了KB4522741,问题解决了!重新安装它以确保它负责,但现在 3306 未保留,一切正常。我不明白这一点,我不会想象 Windows 保留端口,更不用说 3306 等常见端口了......非常感谢@lainatnavi 的帮助。
【参考方案1】:
您可能会遇到此问题,因为在端口 3306 上正在处理其他服务。这也可能是由于您的系统中安装了 MySQL(除了 xampp setup 附带的那个)。
我的解决方案: 只需前往您机器上 MySQL 服务器中的 bin 文件夹,然后在命令提示符下从该目录运行此命令。(例如:C:\Program Files\MySQL\MySQL Server 8.0\bin) mysqladmin -u root -p 关机
此命令将安全地关闭在端口 3306 上运行的现有 MySQL,以便您可以使用 xampp 上的 MySQL 访问同一端口。这用于在没有冲突或无需卸载其他应用程序或无需将 my.ini 文件中的端口更改为 3307 的情况下同时工作。现在重新启动 xampp 控制面板并在端口 3306 上启动服务器。这对我有用。
希望这会有所帮助!
【讨论】:
【参考方案2】:您需要更新窗口。这对我有用
【讨论】:
请在您的答案中添加一些解释,以便其他人可以从中学习以上是关于无法在端口 3306 上启动 MySQL的主要内容,如果未能解决你的问题,请参考以下文章
如何修复:MySQL 无法启动:错误“另一个 mysqld 服务器在端口:3306 上运行?” - 检查端口,它是免费的