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 '新密码'; //修改新密码
问题解决了!