PS C:\Program Files\mysql-8.0.16-winx64\bin> net start mysql
MySQL 服务正在启动 ..
MySQL 服务无法启动。
服务没有报告任何错误。
请键入 NET HELPMSG 3534 以获得更多的帮助。
这...是个令人头疼的问题。总而言之,解决方案也是乱七八糟的。有的成功了,有的失败了。
我先说好:以下内容是本人解决问题的方案,不一定适用于大家的,仅仅提供解决问题的思路。
===================================================================
摘要:
在windows中安装MySQL有两种方案,一种是官方提供的MySQL installer,另一种则是noinstall模式,noinstall模式提供zip压缩包,解压之后输入几个命令配个环境变量便能使用。对于追求方便和对MySQL不甚理解的用户多采用installer进行安装。而nointstall模式安装方法则对用户的技术要求高一些。在文章的以下内容中将分享一种在win10下解决MySQL8.0安装失败时的解决方案。
关键字:windows10;MySQL8.0;MySQL服务无法启动;MySQL没有报告任何错误;
正文:
1.错误来源
吾于MySQL官网下载MySQL8的zip版本:
下载后,直接解压到桌面,并复制至目录:C:\Program Files\mysql-8.0.16-winx64 ,随后将bin目录添加到系统变量path中,并直接按win+x键以管理员身份打开windows powershell,然后输入mysqld -install提示服务安装成功,随后net start mysql想要启动服务,却报了个错:
图1 - MySQL启动报错信息
以往我也遇到过很多次该错误,每次模模糊糊混过去了并没有记录如何解决的方案,更没有深究其中原理。正好在这篇文章中来刨一刨该问题的根。
2.为什么容易犯错
犯错原因:普通人对于MySQL的理解便是将MySQL下载完成后,安装到服务中并启动服务便能使用了。殊不知MySQL在安装的过程中还有几个关键步骤需要用户手动解决。往往是忽略了这些关键步骤,所以一次次地出现一些不可预知的错误,这些问题竟令我们束手无策。
windows中 noinstall MySQL安装的关键步骤
图2 - MySQL官方文档中关于noinstall zip Arch安装的步骤
简而言之:
1.解压 2.创建修改配置文件 3.选择服务器类型(参考) 4.初始化Data目录 5.第一次启动 6.从命令行启动 7.环境变量添加 8.把MySQL加入到windows服务中去 9.测试
其中,最容易是我们犯糊涂的就是2,4,5等步骤(3是干嘛用的我还不太清除),这三个一旦出错,就容易出现上面的错误信息。
3.如何解决错误
要避免这个错误,我们可以直接就事论事,如何解决创建修改配置文件、初始化Data目录、第一次启动中所遇到的问题。
配置文件的书写:在mysql根目录下创建my.ini,在启动书写[mysql]节点的配置,[mysqld]节点配置,参考,而我从网上也得到一些谣言:8.0配置在bin目录下的mysql_config.pl中书写,而不用my.conf和my.ini了,然而我在官网并没有发现有这种说话。可是事实是,我书写了my.ini然后尝试按照步骤来启动后,仍然出现服务无法启动的状况,先不说网上这哥们儿说的是否有根据(我不清楚),反正按照他说的没什么毛病。总之什么地方肯定出问题了。我也是修改bin目录下的mysql_config.pl来解决的。
初始化data目录(应该先修改配置文件):注意,首先切换到bin目录,甭管你配置没配置环境变量(网上前辈这么说的,我也是这么做的,引用),然后执行 mysqld -initialize,静候片刻,在mysql根目录下出现data文件夹即可。
最后,在键入mysqld -install安装服务(如果服务有问题,mysqld -remove可以移除服务)。
最最后,键入net start mysql启动服务。服务名在 任务管理器--服务 中可以查看。
4.解决问题方案详细步骤
4.1修改配置文件
将下载下来的zip解压后拷贝到某个目录;然后配置环境变量(可选);接着修改bin目录下的文件mysql_config.pl,使用notepad++打开,详细修改内容请参照:
my $ldata = 'C:/Program Files/mysql-8.0.16-winx64/data';
my $execdir = 'C:/Program Files/mysql-8.0.16-winx64/bin';
my $bindir = 'C:/Program Files/mysql-8.0.16-winx64/bin';
我是看到启动有跟windows目录相关的就改成我自己的目录了,这些目录就包含根目录 bin目录 data目录等。data此时可能没有创建,因为需要mysqld -initialize来创建。
这里需要注意windows目录反斜杠修改过来,不修改的话好像需要转义,即 \\
其他地方我也修改了,因为不知道修改的对不对,就不贴出来了,怕误导了大家;总而言之最后服务启动时没问题。
4.2键入命令行命令
修改完成后,在bin目录打开powershell(在bin目录空白处按住shift鼠标右击),打开后键入命令 mysqld -install,在键入mysqld --initialize 在键入net start mysql 如下:
图3 - 成功启动mysql服务
5.总结
其中问题的根源所在是配置文件的修改和书写,在下安装的是mysql8.0,如果大家8.0也遇到同样的问题,不妨按照上面所说的步骤试一试,也许就成功了呢! 这里也需要注意下,powershell中请尽量以管理员身份打开,不然容易报错,在安装服务的时候如果不是管理员身份就会报access denied的错误等。