前言
因为使用的是mysql8.0的版本,所以一般的直接跳过验证阶段的方法:mysqld skip-grant-tables(只能在mysql8.0一下版本才能生效)没有办法执行,当根据网上的解决方法关闭服务后运行mysqld --shared-memory --skip-grant-tables也无法正常执行,产生一堆报错。但经过各种寻找资料,终于还是把问题解决了,博主尝试跳过密码认证的报错如下:希望可以帮助和我一样的小伙伴。
报错排查
排查过程还是主要根据错误日志解决,请小伙伴根据自己的实际情况确定解决方案
第一
首先最容易解决的报错是:
2020-10-12T02:59:15.651181Z 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)
报错是指当前目录下没有存放数据的data文件夹,于是只需要在mysql8.0的C:\Program Files\MySQL\MySQL Server 8.0目录下创建一个data文件夹即可。
第二
观察以下报错:
2020-10-12T02:59:15.650662Z 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
2020-10-12T02:59:15.650917Z 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
可见,两个报错都是由于无法创建一个叫mysqld_tmp_file_case_insensitive_test.lower-test的文件而产生的,因为windows宇Linux的下的命令行差距有点大,所以我采用的是通过管理员命令行进行操作,具体解决方案如下:
-
右键win的标志打开管理员命令行终端
-
打开到mysql安装目录
-
运行代码
./mysqld --initialize --lower-case-table-names=1 //注意没有.exe的后缀,下面是错的 ./mysqld.exe --initialize --lower-case-table-names=1
当然保险起见,我还是贴上图片
当没有任何报错就说明运行成功了
此时你成功的创建了mysqld_tmp_file_case_insensitive_test.lower-test的文件
报错解决完后,按照基本流程走
依次执行以下代码:
//停止mysql服务
PS C:\Program Files\MySQL Server 8.0\bin> net stop mysql
//进行密码跳过认证
PS C:\Program Files\MySQL Server 8.0\bin> mysqld --shared-memory --skip-grant-tables
//此时,这个终端窗口会卡住,无法输入命令,这就说明你成功了
//打开新的终端窗口,快捷键:win+r,输入cmd
C:\Users\15395>mysqld --shared-memory --skip-grant-tables
//直接登入MySQL
C:\Users\15395>mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 7
Server version: 8.0.20 MySQL Community Server - GPL
Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
//刷新权限
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.03 sec)
//重新设置密码,本人设置的123
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123'
-> ;
Query OK, 0 rows affected (0.04 sec)
//推出MySQL
mysql> QUIT
Bye
//登录mysql
C:\Users\15395>MYSQL -U ROOT -P
Enter password: ***
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.20 MySQL Community Server - GPL
Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
//登录成功
小结
- 遇到报错还是要根据自己的具体问题具体分析
- 第一个报错(缺少data文件夹)好像有时data目录存在时也会有这个报错,网上说可以删除重建一个空的data文件夹,
- 我数据库密码都给了,要个点赞不过分吧