解决mysql密码错误,在my.ini里添加skip-grant-tables都没有用

1、停止数据库

net stop mysql

2、在mysql的bin目录下,打开cmd窗口,运行如下命令:注意下面的路径是ProgramData下MySQL中my.ini文件的路径
(感觉这和直接在my.ini文件里添加ship-grant-tables没有什么两样,但我在my.ini文件里试过多次,没有一次管用,真的绝望)

mysqld --defaults-file="C:\ProgramData\MySQL\MySQL Server 5.7\my.ini" --skip-grant-tables

3、任意打开第二个cmd,连接mysql

mysql -uroot -p

遇到需要输入密码时,直接回车,就可以进去

4、连接好mysql之后,运行命令

show databases;

5、继续使用如下命令

use mysql;

6、使用命令修改root密码(两种情况)

  • 版本为5.7以前的mysql,运行这条语句(此处的新密码为你要设置的新密码)
UPDATE user SET Password=PASSWORD('新密码') where USER='root';update mysql.user set password=PASSWORD("root") where User="root";
  • 版本为5.7及其之后的运行这条语句
UPDATE user SET authentication_string=PASSWORD('新密码') where USER='root';update mysql.user set authentication_string=PASSWORD("root") where User="root";

原因是:mysql中密码的字段名由password变为了authentication_string

For Mysql before 5.7 it is "password"

Since MySQL 5.7 it is "authentication_string"

7、刷新权限

FLUSH PRIVILEGES;

8、退出数据库

quit

9、重新登录数据库,并输入密码就可以了

mysql -uroot -p

 

你可能感兴趣的:(mysql)