mysql8 忘记root密码的重置方法

好久登服务器了,忘记了mysql8的密码,本来对linux操作就不熟,折腾了好久搞定了在此记录下。

开始用常规方法停止mysql服务,然后 sudo mysqld_safe --skip-grant-tables & 跳过密码验证登录,结果服务起不来,然后进入/etc/mysql/mysql.conf.d/ 修改mysqld.cnf 文件,直接在[mysqld]下添加 skip-grant-tables跳过,重启服务。

mysql -u root 登录成功,但用 ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码'; 修改密码时提示:ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement,无法在 --skip-grant-tables 下修改密码。这就进了死循环,本来就是忘记密码了,结果跳过密码不能修改,不跳过密码让我怎么进数据库。。。。。

经过一番折腾,找到了一种解决方法

1、切换到root用户身份,执行 mysqld --console --skip-grant-tables --shared-memory 免密登录。

2、新建一个连接,普通用户即可,然后 mysql -u root 登录数据库

3、登录成功后执行以下操作

      use mysql; 

      select host,user,authentication_string from user;  //查询看用户的密码状态,不查也行

      update user set authentication_string='' where user='root';  //将root用户密码清空

4、service mysql restart;重启服务器

5、mysql -u root -p 登录,密码随便输个,登录成功。

6、flush privileges;  //刷新权限

      alter user 'root'@'localhost' identified with mysql_native_password by '新密码';  //修改新密码

问题解决了!

posted @ 2023-09-23 01:39  小政哥01  阅读(364)  评论(0编辑  收藏  举报