先说结论:这是MYSQL官方原生带来的一个巨大BUG!责任在MYSQL官方。

症状:安装完毕后,第一次使用很正常,重启操作系统,马上出现提示mysql没有启动。

(一)使用net start mysql启动,失败。提示如下:

C:\Program Files\MySQL\MySQL Server 8.0\bin>mysqld --install
Install/Remove of the Service Denied!

C:\Program Files\MySQL\MySQL Server 8.0\bin>net start mysql
服务名无效。

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

C:\Program Files\MySQL\MySQL Server 8.0\bin>net start mysql80
MySQL80 服务正在启动 ........
MySQL80 服务无法启动。

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

(二)查看原因,红色部分提示没有这个目录,注意!这是官方原生BUG! 

C:\Program Files\MySQL\MySQL Server 8.0\bin>NET HELPMSG 3523

C:\Program Files\MySQL\MySQL Server 8.0\bin>mysqld --console
2022-01-03T16:13:25.689802Z 0 [System] [MY-010116] [Server] C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqld.exe (mysqld 8.0.26) starting as process 12364
2022-01-03T16:13:25.692845Z 0 [Warning] [MY-010091] [Server] Can't create test file C:\Program Files\MySQL\MySQL Server 8.0\data\mysqld_tmp_file_case_insensitive_test.lower-test
2022-01-03T16:13:25.692968Z 0 [Warning] [MY-010091] [Server] Can't create test file C:\Program Files\MySQL\MySQL Server 8.0\data\mysqld_tmp_file_case_insensitive_test.lower-test
2022-01-03T16:13:25.694705Z 0 [ERROR] [MY-013276] [Server] Failed to set datadir to 'C:\Program Files\MySQL\MySQL Server 8.0\data\' (OS errno: 2 - No such file or directory)
2022-01-03T16:13:25.697081Z 0 [ERROR] [MY-010119] [Server] Aborting
2022-01-03T16:13:25.697276Z 0 [System] [MY-010910] [Server] C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqld.exe: Shutdown complete (mysqld 8.0.26)  MySQL Community Server - GPL. 

(三)注意!这是官方原生BUG!一大批用户被官方这个BUG搞得崩溃。不怪用户。例如下面这些用户: 

(四)检查一下自己的my.ini是否配置正确。

如果在mysql的安装路径(C:\Program Files\MySQL\MySQL Server 8.0)中没有my.ini配置文件,可以从C:\ProgramData\MySQL\MySQL Server 8.0\my.ini,直接拷贝过来。

如果怕出错可以参考下图,但是记得把路径改为你自己的路径。如果之前没有配置过,在MySQL安装目录根目录下新建一个文本文件,参照下面的写法。

自己手动创建一个,文件名为:my.ini,内容如下:

(五)解决问题的关键点在这里——让MYSQL自己去创建data文件夹!!!

注意:datadir属性后的(C:\Program Files\MySQL\MySQL Server 8.0)data文件夹,一定不要自己手动创建!!!手动创建会有问题。如果自己创建了可以删除掉,再执行后面的操作。

具体方法:

(1)运行CMD进入mysql的bin目录:cd C:\Program Files\MySQL\MySQL Server 8.0\bin

(2)执行 mysqld --defaults-file=my.ini --initialize-insecure(最好是复制我的,不然容易打错)(mysqld  --initialize-insecure) 进行初始化。第一次执行的话,时间会久一些,执行结束后没有输出信息,但是,查看bin的同级目录下会多出一个data文件夹,里面一堆文件。

说明:在mysql5.7以上版本中默认没有这个data目录,即没有初始化服务。需要先初始化mysql才可以启动服务,否则会报 “服务没有报告任何错误”,启动失败。

(六)再次执行net start mysql命令启动服务,启动成功!

最后很重要,进去之后一定要设置密码,不然mysql会生成随机密码,第二次就进不去了!设置密码的方式有一些变化,老版本密码是保存在mysql数据库user表的password中,而5.7.9以后的password字段变为了authentication_string,直接sql命令更改其值,再重启mysql服务即可!

(七)修改mysql8.0本地密码。

如果没来得及改MYSQL密码,可用以下方法重置密码。依次执行命令如下(设置密码为111111):

 在这里插入图片描述

cd C:\Program Files\MySQL\MySQL Server 8.0\bin

net stop Mysql

mysqld --console --skip-grant-tables --shared-memory
 

在这里插入图片描述 

打开第2个dos窗口

依次执行以下命令

cd C:\Program Files\MySQL\MySQL Server 8.0\bin

mysql -u root -p
//不输入密码直接回车

use mysql
update user set authentication_string='' where user='root';
quit

 

 

打开第3个dos窗口

依次执行以下命令

net start Mysql

cd C:\Program Files\MySQL\MySQL Server 8.0\bin

mysql -u root -p

ALTER USER 'root'@'localhost' IDENTIFIED BY '111111';
 

 在这里插入图片描述

 

Logo

华为云1024程序员节送福利,参与活动赢单人4000元礼包,更有热门技术干货免费学习

更多推荐