Linux下mysql8.0当忘记密码,重新设置新密码讲解 及 报错ERROR 1290 (HY000)解决

首先 需要修改mysql配置文件

修改mysql配置文件

[xiaokang@localhost ~]$ sudo vim /etc/my.cnf
[sudo] password for xiaokang:
(在末尾添加一行 skip-grant-tables)

重启mysql服务器

[xiaokang@localhost ~]$ sudo service mysqld restart
Redirecting to /bin/systemctl restart mysqld.service
进入到里面在末尾添加一行 skip-grant-tables 意思是跳过授权表,这样就可以无密码登陆

然后 使用use mysql进入到mysql数据库然后按照以下操作

直接在输入密码行,回车可以无密码登陆

[xiaokang@localhost ~]$ mysql -uroot -p
Enter password:

use mysql 进入到mysql数据库

mysql> ALTER USER ‘root’@’%’ IDENTIFIED WITH mysql_native_password BY ‘456789’;
ERROR 1396 (HY000): Operation ALTER USER failed for ‘root’@‘localhost’
ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement
这2个错误都可以尝试一下,我是遇到1396按照这个方法成功的
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
可能会碰到以上报错ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement,直接按照上面的刷新权限就行

先设置策略和密码长度

mysql> set global validate_password.policy=0;
Query OK, 0 rows affected (0.00 sec)
mysql> set global validate_password.length=1;
Query OK, 0 rows affected (0.00 sec)

mysql8.0 重新设置密码

mysql> ALTER USER ‘root’@’%’ IDENTIFIED WITH mysql_native_password BY ‘456789’;
Query OK, 0 rows affected (0.33 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.33 sec)
最后 注释掉mysql设置文件中的skip-grant-tables,重新启动服务器,这样在使用新密码登录就可以了
————————————————
版权声明:本文为CSDN博主「AllardZhao」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_37189082/article/details/92839888
如果上面解决不了可能就是host的原因,可以借助下面试一下
mysql> select user,host from user;
±-----------------±----------+
| user | host |
±-----------------±----------+
| root | % |
| admin | localhost |
| mysql.infoschema | localhost |
| mysql.session | localhost |
| mysql.sys | localhost |
| zhangj | localhost |
±-----------------±----------+
注意root,host是’%’

ALTER USER ‘root’@‘localhost’ IDENTIFIED WITH mysql_native_password BY ‘123456’;
改成:

ALTER USER ‘root’@’%’ IDENTIFIED WITH mysql_native_password BY ‘123456’;
————————————————

你可能感兴趣的:(mysql)