mysql57启动错误3306_Windows下mysql服务无法启动:服务没有报告任何错误。

用于搜索引擎抓取,以及给刚进来的人展示我的报错信息,解决方案在下面。

MySQL57 服务正在启动 .

MySQL57 服务无法启动。

服务没有报告任何错误。

请键入 NET HELPMSG 3534 以获得更多的帮助。

2020-12-15T00:39:28.143958Z 0 [ERROR] InnoDB: The innodb_system data file ‘ibdata1’ must be writable

2020-12-15T00:39:28.143958Z 0 [ERROR] InnoDB: The innodb_system data file ‘ibdata1’ must be writable

2020-12-15T00:39:28.144910Z 0 [ERROR] InnoDB: Plugin initialization aborted with error Generic error

2020-12-15T00:39:28.346376Z 0 [ERROR] Plugin ‘InnoDB’ init function returned error.

2020-12-15T00:39:28.346376Z 0 [ERROR] Plugin ‘InnoDB’ registration as a STORAGE ENGINE failed.

2020-12-15T00:39:28.347368Z 0 [ERROR] Failed to initialize plugins.

2020-12-15T00:39:28.348370Z 0 [ERROR] Aborting

前言

本地一直好好的MySQL突然出问题了(我的机器是Windows的),问题是这样的

1bba2806b314d348893caa353c6c2e99.png

虽然本地的mysql里没什么重要的数据,但我自己平时练手的那些项目,数据可都在本地,没了还是很心疼的,练手的项目还有有参考价值的,所以我要将这个问题解决了!!

着手分析

就这提示,也没啥具体的参考、提示信息,想解决也无从下手啊。不过我马上想到了MySQL的日志,可以去看日志嘛,emmm,不过没在本地看过mysql的日志,我也找不到日志在哪里,而且我当初安装MySQL的时候选择了默认安装,把MySQL的服务和数据分开了,目录结构更找不到了,前方无路……

我查询3306端口,端口是被占用的,但是服务没启动起来?

12a73e34c660565602aabaf0cdd37ab9.png

这……突然,我想到了一个命令,之前用过, 可以将错误信息输出到控制台上:mysqld --console ,马上输入这个命令,果然:

901020f660124bef882d69154d7e4e42.png

note那些直接被我忽略,一眼就看到了我熟悉的ERROR,什么?数据文件“ibdata1”必须是可写入的?“ibdata1”是什么文件?哪里有,难道是权限不够吗?但是Linux下修改权限倒是好修改,要查找文件用find命令也好使,可是Windows下不好搞呀。第一次遇到这种问题,我也不敢贸然的去修改,还是先去网上查一查,看看有没有遇到相同问题的网友,参考一下他们的解决方案。

键入关键字“InnoDB: The innodb_system data file ‘ibdata1’ must be writable”,回车,果然,有好多遇到相同问题的网友,不过他们都是在Linux下,一个find命令,一个chmod命令,就完事了,这……

那好吧,我再限定一下关键字:Windows。也有先例的呀,不过我看了解决方案,也看了一些评论,好像有很多都没有解决问题。而且这解决方案也有点草率啊:

d452601e8bf92fa9ea8f2ea0fdb58291.png

直接删除文件?太草率了。我看下面的评论,好像并没有解决问题。我又翻看了其它几篇博客,发现有好几篇都是这么说的,但是反应也不统一,有的能解决,有的不能解决。我觉得不太靠谱啊。

定位问题

我又重新看了控制台的报错信息,“ibdata1”文件必须是可写入的?那我查查本机上有没有这个文件。这里给大家推荐一款Windows下非常好用的查询工具Everything,可以查询文件或者文件,在本机范围内,还可以用正则匹配。我查询了ibdata1,有四个结果

319a8d38946cc86152a585eb62e7401d.png

但三个是我之前Python爬虫的时候装的mysql,已经没用了,还没清理,可以排除。第四个:D:/temp/ 是我放一些临时文件的地方,也可以排除。基本可以确认是前两个文件。

因为我MySQL安装的时候是默认的,所以第一个Program Files是程序安装的地方,第二个ProgramData是存放数据的地方,可能描述得不太准确,懂我意思就行。

解决问题

既然找到了这两个文件,那么接下来修改这个文件的权限应该就可以了,我记得Windows下也可以对文件的读写操作等权限进行修改(的确是可以的,不经常用的操作记忆有点模糊了)。

找到对应文件,数据文件,我先来到的是第二个,也就是ProgramData里面的,

9264e561313388acfdf1ab9f69466230.png

通过Everything可以快速的来到文件目录,当然,也可以一层一层的点开。

选中文件,右击,点开属性,然后在顶部的选项中选择安全,可以看到如下

06a51e3721c7b73b1fd32b059c1dea70.png

这些权限全都有的啊,看起来没问题。

那我再去看看另一个,和上面同样的方法。果然有问题

894e2c456b34f21de338af61cdf24eb3.png

只有读取和执行的权限,没有写入权限,点击编辑,这个文件添加上修改和写入的权限

6068f74d60a02aee1a7b424a0e3b8bf0.png

我也不太清楚Windows下的用户、用户组什么的,就默认选中“所有的程序包”,添加权限就OK了。

到此基本上就OK了,但是还有一个问题,因为刚刚查看端口的时候,发现其实3306这个端口是被占用的,但是服务没启起来,有点僵尸进程的感觉。我们得先把这个进程杀死,释放出被占用的端口。

93f34a9753a497dd3b831eb71170c4b0.png

netstat -aon | findstr 3306 查找3306端口,最后面那个数字就是进程号

taskkill -F /pid 15688 强制杀死15688进程

然后再重新启动服务就OK了

3ab97143e01102d9bd6ada2eb4947b2c.png

整理步骤

使用控制台查看报错信息

mysqld --console

找到对应的文件,赋予权限

查找占用端口的进程并杀死

netstat -aon | findstr 3306 查找3306端口

taskkill -F /pid 15688 强制杀死15688进程

重新启动MySQL服务

net start mysql57 启动mysql57服务

归纳总结

当然,可能导致错误的原因和我不一样,但是可以有类似的解决思路:

使用mysqld --console将错误信息输出到控制台。

根据报错信息在网上查询

参考别人解决方案,根据自己经验,解决问题

写在最后

自己根据实际的经验写的文章,水平有限,如有错误还请指出。另外,问题虽然解决了,但是没搞清楚问题发生的原因,Program Files里的那个Ibdata1文件我重来没有动过,之前一直都好好,怎么突然就不行了呢?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值