MySQL服务名无效或者MySQL正在启动 MySQL无法启动

1,499 阅读3分钟

第一步遇到计算机-右击-管理-服务启动失败:原文链接https://blog.csdn.net/ermaner666/article/details/79096939/

1.在DOS窗口、gitbush以及一些可以使用的命令行工具的界面上,输入:net stop mysql、net start mysql时,总是提示:服务名无效。

出现提示如下:

原因是:因为net start +服务名,启动的是win下注册的服务。此时,系统中并没有注册mysql到服务中。即当前路径下没有mysql服务。

如何将MySQL注册到win服务里面?!!!(步骤如下)

  1. 来到MySQL的安装路径下bin

2. 在命令行中输入mysqld --install

成功:出现Service successfully install代表你已经安装成功,

不成功:

如果出现以上文字的时候,你需要用管理员的身份运行DOS窗口,这样就可以成功了

3. 执行 net start mysql出现:

删除mysql下的data文件,重新执行 mysqld --initialize 就可以在当前路径下生成data文件夹,再执行net start mysql 就可以启动mysql

快速以管理员身份打开DOS:

用管理员身份打开DOS命令窗口:在当前文件夹下bin下,先按住Shift+单击鼠标右键以管理员身份运行Dos窗口就可以。

第二步之后发现还是MySQL无法启动:引入原文链接参考https://cloud.tencent.com/developer/article/1387180

1、此时通过命令行窗口再次登录数据库(命令为:mysql –u root -p)就可以顺利进入了,但是输入你之前的历史遗留的密码并不好使了,而且会报错,报错为:ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES),如下图所示。

这是因为MySQL初始化之后,生成了一个初始密码,放在了data文件夹下以.err为后缀的文件夹下,如下图所示。

2、此时,通过电脑自带的记事本打开文件,是不太行得通的,通过sublime text就可以顺利打开了,以“password”为搜索项,很快就定位到初始密码了,如下图所示。

这个密码是随机生成的,而且相对复杂,可以直接复杂粘贴到命令行窗口。

3、将初始化密码进行复制,粘贴到MySQL登录的密码中去,如下图所示。

此时可以看到,顺利进入到了MySQL。

4、但是直接输入MySQL的简单命令之后,发现并不能操作数据库,会提示报错:ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.,如下图所示。

5、这个报错的意思是告诉你重设密码,此时只需要输入命令重新设置密码即可。至于MySQL重设密码的方法网上有很多,在这里不展开讲述了,小编用的语法是:alter user 'root'@'localhost' identified by '123456';,其中123456是重设的密码,大家可以自定义的,顺利设置完成之后记得刷新权限:flush privileges;,尔后你就可以正常操作数据库了。该步骤的具体操作过程如下图所示。

至此,问题完美的解决了,希望对日后不慎踩入此坑的小伙伴们有帮助~~

第三步之后发现还navicat连接异常 authentication plugin 'caching_sha2_password' ,解决引入原文链接https://blog.csdn.net/m290345792/article/details/88316962?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task

1.mysql 8.0 默认使用 caching_sha2_password 身份验证机制 —— 从原来的 mysql_native_password 更改为 caching_sha2_password。  从 5.7 升级 8.0 版本的不会改变现有用户的身份验证方法,但新用户会默认使用新的 caching_sha2_password 。

客户端不支持新的加密方式。

修改用户的密码和加密方式。在命令行模式下进入mysql。

输入以下命令:ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';

然后使用navicate 就可以正常连接了。