用的是著名的 phpstudy 程序,里面内置了 MySQL。之前装了很多次都没有问题,这次在全新的 Windows 10 上安装,其它都正常,但 Mysql 就是无法启动。显示红点(红灯)虽然下方可能提示已经启动,经测试,服务确实没有起来。如下图:
奇怪了,能想到的方法都试过了,就是不行。这里总结一下常规的解决方法:
1.端口被占用:MySQL默认监听3306端口,如果该端口被其他程序占用,就会导致MySQL无法启动。可以通过修改MySQL配置文件中的端口号或者查找并杀掉占用该端口的程序来解决。
2.配置文件错误:MySQL的配置文件my.ini中可能存在配置错误,导致MySQL无法启动。可以通过检查配置文件中的配置项是否正确,如用户名、密码、端口号等来解决。
3.权限问题:MySQL的数据目录可能没有足够的权限,导致MySQL无法正常启动。可以通过修改数据目录的权限或者将数据目录更改为具有足够权限的目录来解决。
4.软件冲突:如果您安装了其他与MySQL冲突的软件,可能会导致MySQL无法启动。可以尝试卸载或停止这些软件,或者将MySQL移动到与这些软件不冲突的位置来解决。
针对这些问题,您可以依次排查和解决,如果仍然无法启动MySQL,可以查看MySQL的错误日志文件以获取更多的信息。
以上都做了检查和处理,问题依然存在。最后一句话很重要:查看错误日志!打开MySQL的安装目录下的data目录,找到DESKTOP-VO4KCPQ.err,想必这个就是错误日志。打开后果然发现一堆错误提示,截取核心的:
230521 11:53:44 [Note] Plugin 'FEDERATED' is disabled. 230521 11:53:44 InnoDB: The InnoDB memory heap is disabled 230521 11:53:44 InnoDB: Mutexes and rw_locks use Windows interlocked functions 230521 11:53:44 InnoDB: Compressed tables use zlib 1.2.3 230521 11:53:44 InnoDB: Initializing buffer pool, size = 47.0M 230521 11:53:44 InnoDB: Completed initialization of buffer pool 230521 11:53:44 InnoDB: highest supported file format is Barracuda. 230521 11:53:44 InnoDB: Operating system error number 87 in a file operation. InnoDB: Some operating system error numbers are described at InnoDB: http://dev.mysql.com/doc/refman/5.5/en/operating-system-error-codes.html InnoDB: File name .\ib_logfile0 InnoDB: File operation call: 'aio read'. InnoDB: Cannot continue operation.
注意上面的87,87号错误代码为 MySQL 的 InnoDB 引擎相关问题。
MySQL 默认 innodb_flush_method=async_unbuffered,该选项不支持在 Windows 的 4K 扇区硬盘上运行 MySQL 服务器,解决方法是在 配置文件 my.ini 文件的 [mysqld] 选项下新增 innodb_flush_method=normal ,重启,至此,问题完美解决。