MySQL 5.7 重置root密码,试过N中方法终于找到

阅读更多
操作系统是windows,MySQL版本是 5.7,my.ini在另外的路径下。

已经用了一段时间,也设置了好几个用户,因为要最近想修改root密码,所以用网上的:

mysqladmin -uroot -pmy_old_pwd password my_new_pwd

来修改密码,重启服务后,发现没有修改成功。又试了几次,包括直接update mysql.user,都不成功,结果后来再试时,出现如下出错信息:

mysqladmin: connect to server at 'localhost' failed.

于是找到MySQL 5.7的官方文档:http://dev.mysql.com/doc/refman/5.7/en/resetting-permissions.html

按照如下步骤:

1. 修改 my.ini,在 [mysqld]下增加一行:

skip-grant-tables

2. 重启 mysql

3. 在mysql/bin目录下,执行mysql -uroot,连接上mysql

4. 参考上面官方首次,
  
   5.7.6之后版本用如下命令:
   ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';
   运行后出如下信息,说明没成功
   Query OK, 0 rows affected (0.00 sec)


   于是在用5.7.5之前版本的命令:
   SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPass');
   运行后出如下信息,说明也没成功
   Query OK, 0 rows affected (0.00 sec)

5. 再用如下命令测试:
    UPDATE mysql.user SET authentication_string = PASSWORD('MyNewPass') password_expired = 'N'
    WHERE User = 'root' AND Host = 'localhost';
    运行后也是: Query OK, 0 rows affected
    所以下面的也就不用执行了
    FLUSH PRIVILEGES;

6. 接着用如下命令,放宽where条件
   update mysql.user set authentication_string=PASSWORD('newpassword') where User='root';
   执行后提示:Query OK, 1 row affected...说明有戏

7. 将my.ini 修改回来,重启mysql,做测试:root用户新密码可用了,旧密码不再可用。其他用户没有受到影响。






你可能感兴趣的:(MySQL)