1.解决步骤

客户现场电脑由于经常断电(单机部署,windows系统),某天,终于忍受不了,无法开机......开机就会进入如下界面:

记录一次重装C盘导致MySQL不能正常提供服务问题_配置文件

只能选择重装系统,好在客户的数据都是存储在E盘:

记录一次重装C盘导致MySQL不能正常提供服务问题_配置文件_02

MySQL的版本是5.7。其中,data目录(里面的Data文件夹是数据库的根目录):

记录一次重装C盘导致MySQL不能正常提供服务问题_mysql_03

记录一次重装C盘导致MySQL不能正常提供服务问题_mysql_04

install目录:

记录一次重装C盘导致MySQL不能正常提供服务问题_配置文件_05

重装系统后,找不到MySQL服务,命令行连接MySQL也不行:

记录一次重装C盘导致MySQL不能正常提供服务问题_MySQL_06

记录一次重装C盘导致MySQL不能正常提供服务问题_mysql_07

首先环境变量肯定没了,右键“我的电脑”打开属性,然后打开高级系统设置,配置环境变量Path:

记录一次重装C盘导致MySQL不能正常提供服务问题_配置文件_08

保存后重新打开命令行窗户,mysql命令可以使用,但是连接不上MySQL,因为现在MySQL服务还未修复和启动:

记录一次重装C盘导致MySQL不能正常提供服务问题_MySQL_09

修复MySQL最主要的问题是数据问题(之前的数据不能丢失),网上搜索大量资料,基本都无法彻底解决,或者资料不全。结合网上资料,以及MySQL免安装的教程,最终整理出一套完整的解决方式(不一定适应所有情况)。

首先,MySQL服务已经找不到,所以需要重新安装,重新安装的命令是“mysqld install”。但是安装前需要考虑两个问题,一个是配置文件(后续可能需要修改配置),一个是数据存储目录。抛开上面两个问题不管,直接执行命令,可以安装成功(如果报计算机丢失MSVCP120.dll,参考第二章解决),并且服务列表中也可以找到MySQL服务:

记录一次重装C盘导致MySQL不能正常提供服务问题_MySQL_10

记录一次重装C盘导致MySQL不能正常提供服务问题_mysql_11

但是右键启动服务的时候会报错:

记录一次重装C盘导致MySQL不能正常提供服务问题_MySQL_12

通过事件查看器查看日志:

记录一次重装C盘导致MySQL不能正常提供服务问题_配置文件_13

根据日志得出的信息是,MySQL安装后,默认使用的数据存储目录为“E:\mysql\install\data”,但是该目录并不存在,所以报错。

注意:如果是MySQL5.5版本,则不会报错(可以启动成功),因为MySQL5.5默认会在安装目录下创建一个data目录(即使安装的时候指定了其它的数据存储目录,默认还是会创建data文件夹)。

奇怪的是默认的配置文件my.ini中(位于E:/mysql/data目录下)已经指定了数据存储目录为“E:/mysql/data/Data/”:

记录一次重装C盘导致MySQL不能正常提供服务问题_配置文件_14

也就是说,这个配置文件没有生效(进一步测试的话可以修改my.ini中的配置,例如最大连接数,修改后重启MySQL,使用命令show variables like "%max_connections%"查询,发现还是默认的配置)。想要让MySQL启动成功,可以创建上面报错信息中提到的目录(E:\mysql\install\data),然后将之前数据存储目录中的内容拷贝(E:/mysql/data/Data/文件夹下的所有文件)到该目录下(E:\mysql\install\data)。由于要求的目录有了,并且也将之前的数据拷贝过去了,此时MySQL可以正常启动并且对外提供服务,但是后期无法修改配置文件,因为之前安装时生成的默认配置文件不生效(E:/mysql/data/my.ini)。

既然配置文件不生效,那是不是可以在安装的时候指定配置文件目录呢?如下所示,先删除之前安装的MySQL服务,再指定配置文件安装:

记录一次重装C盘导致MySQL不能正常提供服务问题_MySQL_15

但是启动后还是报之前的错误,也就是说虽然指定了配置文件,还是无效。接着参考前面的步骤,创建报错信息中提到的目录(E:\mysql\install\data),然后将之前数据存储目录中的内容拷贝(E:/mysql/data/Data/文件夹下的所有文件)到该目录下(E:\mysql\install\data)。之后,再在服务列表中启动MySQL,此时服务却启动不成功,并且事件查看器中也找不到报错信息。走进了绝路......

冷静下来分析上面的问题,最终问题就出在配置文件身上。于是想到免安装版的MySQL也是通过该命令安装(mysql install),并且也需要一个my.ini配置文件。但是查看该安装流程,安装命令中并未指定配置文件,但是需要将my.ini文件放到根目录下。到这里,就明白为什么上面流程中的配置文件一直不生效,并且在未指定配置文件的情况下,可以启动成功,但是找不到启动所依赖的配置文件。MySQL默认读取的是安装目录下的配置文件,如果不存在,则使用程序中指定的默认配置安装

到这里,就知道如何解决了。首先,删除已经安装的MySQL服务(如果已经启动的话需要先停止):

记录一次重装C盘导致MySQL不能正常提供服务问题_配置文件_16

将之前E:/mysql/data目录下的配置文件my.ini拷贝到安装目录下(与bin目录在同一文件夹下):

记录一次重装C盘导致MySQL不能正常提供服务问题_MySQL_17

记录一次重装C盘导致MySQL不能正常提供服务问题_mysql_18

配置文件中的路径可以不变(如果需要改变,也可以修改,但是实际的数据目录也要跟着修改):

记录一次重装C盘导致MySQL不能正常提供服务问题_mysql_19

需要注意的是,如果修改配置文件,需要保证修改后的文件格式为UTF-8。如果使用的文本文件打开,修改后的编码格式会被修改,建议使用其他编辑器打开。

记录一次重装C盘导致MySQL不能正常提供服务问题_MySQL_20

接着执行install命令,可以正常安装,服务列表中也有对应的MySQL服务:

记录一次重装C盘导致MySQL不能正常提供服务问题_MySQL_21

记录一次重装C盘导致MySQL不能正常提供服务问题_mysql_22

此时,MySQL服务也可以正常启动:

记录一次重装C盘导致MySQL不能正常提供服务问题_MySQL_23

数据库中的表也都正常,包括数据库的账号、密码等:

记录一次重装C盘导致MySQL不能正常提供服务问题_MySQL_24

注意,还有一个容易被忽略的配置可能会导致MySQL启动不成功,就是MySQL5.7版本中的secure-file-priv配置,该路径必须配置准确

记录一次重装C盘导致MySQL不能正常提供服务问题_mysql_25

Uploads文件夹通常与Data文件夹在同一目录下:

记录一次重装C盘导致MySQL不能正常提供服务问题_配置文件_26

如果该路径配置错误,启动MySQL失败,通过事件查看器发现不了问题,只能通过“mysqld --console”命令查看,例如:

记录一次重装C盘导致MySQL不能正常提供服务问题_配置文件_27

为了测试my.ini配置文件是否生效,先看下MySQL默认的连接数配置:

记录一次重装C盘导致MySQL不能正常提供服务问题_mysql_28

修改E:\mysql\install目录下的my.ini文件(新的配置文件),将连接数修改为2000:

记录一次重装C盘导致MySQL不能正常提供服务问题_MySQL_29

方便对比,将E:\mysql\data\my.ini(旧的配置文件)中的连接数修改为3000:

记录一次重装C盘导致MySQL不能正常提供服务问题_mysql_30

修改后重启MySQL(注意需要保证修改后的配置文件格式为UTF-8),查看最大连接数:

记录一次重装C盘导致MySQL不能正常提供服务问题_配置文件_31

最终生效的是新的配置文件,为了避免后续维护的歧义(混淆),建议将旧的配置文件删除:

记录一次重装C盘导致MySQL不能正常提供服务问题_配置文件_32

提示,通过“mysqld --console”命令也可以查看MySQL启动失败的原因,例如:

记录一次重装C盘导致MySQL不能正常提供服务问题_MySQL_33

2.环境问题

进入mysql安装目录的bin目录下执行命令“mysql install”,报错:

记录一次重装C盘导致MySQL不能正常提供服务问题_MySQL_34

计算机丢失MSVCP120.dll,无法启动此程序。通过上网搜索发现是缺少VC++运行库的原因,安装对应版本VC库即可:

msvcp、msvcr、vcomp140.dll属于VC++2015版

msvcp、msvcr、vcomp120.dll属于VC++2013版

msvcp、msvcr、vcomp110.dll属于VC++2012版

msvcp、msvcr、vcomp100.dll属于VC++2010版

msvcp、msvcr、vcomp90.dll属于VC++2008版

msvcp、msvcr60、71和80.dll,以及vcomp.dll(不带数字版本号)属于VC++2005版

进入链接:https://www.microsoft.com/zh-CN/download/details.aspx?id=40784

记录一次重装C盘导致MySQL不能正常提供服务问题_mysql_35

点击下载按钮,然后选择机器对应的版本(这里为64位系统):

记录一次重装C盘导致MySQL不能正常提供服务问题_MySQL_36

下载后直接点击安装即可。安装好再次执行命令,显示安装成功:

记录一次重装C盘导致MySQL不能正常提供服务问题_MySQL_37

参考地址:

https://blog.csdn.net/lihe4151021/article/details/123519485
https://www.downkr.com/news/238501_1.html
https://blog.csdn.net/qq_42319794/article/details/123577050
https://blog.csdn.net/m0_52154312/article/details/117195945