最新mysql8.0.22忘记密码解决大法

windows10 mysql8.0.22忘记密码解决大法,密码搞不定,不管什么原因,不管什么提示,就按下面的方法搞一下,省时高效.

如有解决不了的密码问题,欢迎留言讨论,共同进步.

mysql忘记密码:

准备工作:停止mysql服务,win+r,运行services.msc,找到mysql服务并中止它.删除服务mysqld -remove mysql; 删除mysqld进程taskkill /f /im mysqld.exe 

//注意,密码连接不成功,不一定就是密码问题,要先检查服务有没有启动.否则走弯路.https://blog.csdn.net/xiaoshaohui1234/article/details/72947707

简要步骤:方案一:

1.服务端:mysqld --console --skip-grant-tables --shared-memory,

2.客户端:mysql -u root -p

   密码置空:update mysql.user set authentication_string='' where user="root";

    刷新:flush privileges;  密码置空之后,必须,刷新一下就可以设置密码了.

3.服务端重启:ctrl+c,两次,中止之前mysqld.然后运行mysqld --console

4.客户端:mysql -u root -p

设置密码:set password for 'root'@'localhost'='123'; 或SET PASSWORD = 'auth_string';为当前用户设置密码.

OK

方案二:(此法较稳妥)

1.服务端:mysqld --console --skip-grant-tables --shared-memory,

2.客户端:mysql -u root -p

   密码置空:update mysql.user set authentication_string='' where user="root";

   刷新:flush privileges;

3.客户端:设置密码:ALTER user 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'admin';

加密规则和密码同时改.ALTER user 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'admin';  OK

注意:密码置空之后得flush privileges刷新一下,才能修改密码.不然会提示ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement

回顾:改密码的4条命令:1.置空 update mysql.user set authentication_string='' where user='root';   2.alter user 'root'@'localhost' identified by 'admin'; (这一句中也可带上with 加密插件名称)  3.set password for 'root'@'localhost'='admin';4.flush privileges;

ok

方案三:

用前面二个方法不成功,出现ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

 (这种情况主要密码安全格式要求严格所致,一般在.exe安装方式安装mysql后或执行mysql_secure_installation之后,修改密码时出现 。

关于MySQL安全配置mysql_secure_installation参看https://blog.csdn.net/qq_29627051/article/details/105390362

https://www.jb51.net/article/47727.htm)

按前面的方法修改密码,至密码置空之后,用alter user user() identified by 'admin';不成功,出现错误提示:ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

根据提示信息,查看一下密码变量情况 :

1.SHOW VARIABLES LIKE 'validate_password%';

2.1重新更改密码级别:

set global validate_password.policy=0;或set global validate_password.policy=low;

注意变量名称不要打错,mysql5.7之前的变量名为validate_password_policy,后面是下划线,8.0.22的是点号.

2.2修改密码长度:set global validate_password.length=4;

3.flush privileges;

4. set password for 'root'@'localhost'='1234';或者ALTER user 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'admin';都可以.

ok

(通过set global validate_password.policy=0;和set global validate_password.length=4;两个命令所修改的变量值0、4,在重启mysql服务之后,还会恢复原值MEDIUM和8。

但修改过的密码是可以用的).

关于validate_password_policy可以参考这个https://blog.csdn.net/wltsysterm/article/details/79649484

安装插件:此法不行

INSTALL PLUGIN validate_password SONAME 'validate_password.so';

卸插件

uninstall plugin validate_password ;

*****************************

安装插件可以用:

mysql> INSTALL COMPONENT 'file://component_validate_password';
Query OK, 0 rows affected (0.01 sec)
mysql> show global variables like '%validate_password%';

卸载插件: 

mysql> unINSTALL COMPONENT 'file://component_validate_password';
Query OK, 0 rows affected (0.00 sec)

********************************

如果卸载了插件的话,之前的密码登录会一直等.(也可能是服务端有问题).

 

 

 


mysql忘记密码,解决办法详细版,如下:

以管理员方式

打开shell窗口

一.首先开一窗口A运行服务端

mysqld -remove mysql  (删除mysql服务)      //默认服务名为mysql,根据你的名称修改.本地电脑的话,可以用services.msc,启动服务器,然后按一下m键,快速找到mysql开头的服务,停止它.

taskkill /f /im mysqld.exe   删除mysqld进程

mysqld --console --skip-grant-tables --shared-memory    跳过权限表启动服务(这样不必去修改my.ini)

二.另开一窗口B

1.登录

D:\mysql\bin>mysql -u root -p

查看

use mysql;
select host,user,plugin from user;  这两句等价于select host,user,plugin from mysql.user;
mysql> select host,user,plugin from mysql.user;

2.置密码为空

mysql> UPDATE mysql.user SET authentication_string='' WHERE user='root' and host='localhost';  //置空,两个单引号,之间无空格,看起来象一个双引号.

3.刷新

mysql> flush privileges;

查看密码置空效果:

mysql> select host,user,user password,plugin,authentication_string from mysql.user;

注:8.0.22保存密码的字段为authentication_strin
这里的password看着是一个字段,但select password不会显示,会报错,其对就的是user password.

在这里似乎不能用update的方式来增加密码,试了,电脑好长时间无回馈.

此时空密码状态下,改变密码可用ALTER user 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'admin';

注意: 特别提醒注意的一点是,新版的mysql数据库下的user表中已经没有Password字段了 而是将加密后的用户密码存储于authentication_string字段。

4.修改密码

加密规则和密码同时改.ALTER user 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'admin';  OK

 

(ALTER user 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'admin';这个加密对应插件是用caching_sha2_password)

此时再查看

mysql> select host,user,user password,plugin,authentication_string from mysql.user;

密码admin是经过加密之后内容,看不懂才正常.不是明语文显示.


另.alter user user() identified by "admin";也可以修改密码.但建议用ALTER user 'root'@'localhost' IDENTIFIED BY 'admin';    或者ALTER user 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'admin';

如果修改当前登录身份的密码直接用alter user user() identified by "123";有时也可以.

但是

有时ALTER user user() IDENTIFIED BY 'admin';

会提示出错

:

ERROR 1396 (HY000): Operation ALTER USER failed for 'root'@'skip-grants host'

刷新也无用.

而用ALTER user 'root'@'localhost' IDENTIFIED BY 'admin';或者ALTER user 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'admin';(建议用这条语句)可以.

所以,稳妥点还是多打几个字用有@的比用user()效果好.


 

特殊例外(方案三):用上述方法修改密码出现ERROR 1819 (HY000): Your password does not satisfy the current policy requirements


这种情况主要密码安全格式要求严格所致,一般在.exe安装方式安装mysql后或执行mysql_secure_installation之后,再改密码时出现 .

(关于MySQL安全配置mysql_secure_installation参看https://www.jb51.net/article/47727.htm)

按前面的方法修改密码,至密码置空之后,用alter user user() identified by 'admin';不成功,出现错误提示:ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

根据提示信息,查看一下密码变量情况 :SHOW VARIABLES LIKE 'validate_password%';

    关于密码要求参考:  在这里插入图片描述 

密码级别变量validate_password.policy为medium,

重新更改密码级别:

set global validate_password.policy=0;或set global validate_password.policy=low;

注意变量名称不要打错,mysql5.7之前的变量名为validate_password_policy,后面是下划线,8.0.22的是点号.

再次修改密码:

还是出错,再看密码变量值:show variables like 'validate_password%';

密码长度不合格,再修改下长度:set global validate_password.length=4;

再次修改密码:(须flush privileges;刷新之后再修改密码才行.)

(通过set global validate_password.policy=0;和set global validate_password.length=4;两个命令所修改的变量值0、4,在重启mysql服务之后,还会恢复原值MEDIUM和8.

但修改过的密码是可以用的).

注:可以在客户端窗口用cmd命令行方式:mysqladmin -u root shutdown -p 停止 服务窗口对应的mysqld服务。

 

 

 

  • 25
    点赞
  • 83
    收藏
    觉得还不错? 一键收藏
  • 12
    评论
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值