先说结论:这是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';
版权归原作者 爱因斯坦! 所有, 如有侵权,请联系我们删除。