windows环境下mysql忘记密码如何重置详解数据库

前言:

记录一次windows环境下mysql忘记密码如何重置方法;

正文:

好久没动自己windows电脑上的mysql数据库了,今天用的时候发现连接数据库的时候发现报错:

版本信息: Windows 7 + mysql 5.7.12 + navcat12

处理方法:

1、停止mysql服务;

2、修改my.ini配置文件

windows环境下mysql忘记密码如何重置详解数据库

PS: 我的配置文件在“C:/Data/MySQL”中, 另外一个配置文件测试没有效果,网上也有人说 “C:/ProgramData/MySQL/MySQL Server 5.7”这个路径中的my.ini配置文件有效果,我不知道原因,至于有哪位网友知道,希望告诉我

3、编辑配置文件,添加 skip-grant-tables

windows环境下mysql忘记密码如何重置详解数据库

4、保存后,重启mysql服务

5、登陆mysql中,使用“UPDATE User set authentication_string=PASSWORD(‘123456’) WHERE User=”root”;”修改默认账户的密码信息

  字段 “authentication_string”  == 以前版本中的“password”字段 

6、修改my.ini配置文件,去掉 skip-grant-tables,使用新密码登陆即可

参考资料:

IT虾米网

好久没动自己windows电脑上的mysql数据库了,今天用的时候发现navcat到期了,网上找了一个破解文件,挺好用,分享一下:

连接数据库的时候发现报错:

windows环境下mysql忘记密码如何重置详解数据库

于是没办法,只好去网上找解决的办法。

然而找了一圈,并没有一个能够解决我这个问题的(因为是我个人的原因)。

不过好在问题已经解决,所以在这里总结一下:

1、出现这个问题的原因之一是权限的问题,也就是说你的电脑可能没有权限访问mysql数据库。

讲道理这种情况其实基本上不该遇到,因为我们在安装mysql之后,root其实是有最高权限的,而且很少会有人去修改root的权限。

这个问题的解决方法就是授权。授权命令大概是这样的:

grant all privileges on *.* to ‘root’@’我电脑的ip地址’ identified by ‘密码’;

如果你不是用root登陆的,那么就把root改成你的登陆名。

有的同学可能不知道这个命令往哪里写,

开始——运行——输入“cmd”——点击确定

这样就打开了我们的命令提示符界面:

windows环境下mysql忘记密码如何重置详解数据库

然后找到我们的mysql的安装目录,将目录复制到命令提示符中。如图:

windows环境下mysql忘记密码如何重置详解数据库

(cd 是什么意思我想不用特别解释了吧)

然后进入目录下的bin文件:

windows环境下mysql忘记密码如何重置详解数据库

然后输入 mysql -u root -p 如图:

windows环境下mysql忘记密码如何重置详解数据库

在Enter password: 后面输入你的密码。点击回车。

如果密码正确,会出现Welcome 的字符。

如图:

windows环境下mysql忘记密码如何重置详解数据库

这样就成功进入了mysql数据库。

当然如果你已经设置了环境变量,那么不用进入mysql目录,直接输入mysql -uroot就可以了。

当然,你也可以直接打开mysql下的bin窗口,然后按住shift+鼠标右键,选择“在此处打开命令窗口”,就可以直接在bin目录下打开命令提示符窗口了。

接下来就简单了,直接将上面的代码修改一下就可以用了。比如我的电脑的ip地址是:192.168.0.103,我的root密码是:123456,那么我就可以将授权的语句改成:

grant all privileges on *.* to ‘root’@’192.168.0.103’ identified by ‘123456’;
如果你是本地登录的,那么:
grant all privileges on *.* to ‘root’@’localhost’ identified by ‘123456’;
当然你也可以直接改成这样:
grant all privileges on *.* to ‘root’@’%’ identified by ‘123456’;
就可以给所有ip都设定root登陆了。
如果授权成功,会有Query OK的提示。
然后:
flush privileges;
这个是刷新授权的意思,如果没有这句话,授权可能无法立刻生效。
exit;
这个是退出的意思。

授权完成以后,你可以再尝试一下登陆,看看能不能登上。反正我登陆不上。

2.需要重新设置root密码(忘记root密码)。
忘记密码的情况还是比较常见的,如果你忘记了密码,用navicat登陆的时候也会有这个提示,那么就需要修改root密码了。
这一步我也从网上找了一些方法,然后还是没有解决问题,最后才知道是被自己给坑了——
第一步:找到mysql的根目录,找到根目录下的bin文件,按住shift键,右击鼠标,选择:在此处打开命令窗口。如图:

或者以“管理员”身份,使用命令行(cmd)方式 “cd” 到 bin 目录下 

windows环境下mysql忘记密码如何重置详解数据库

在命令行输入 net stop mysql 来停止当前运行中的mysql服务。
然后坑来了:

windows环境下mysql忘记密码如何重置详解数据库

提示没有启动mysql服务。
可是我刚刚是登陆进去的,我知道是启动了的,于是net start mysql 启动一下:

windows环境下mysql忘记密码如何重置详解数据库

服务无法启动……
好在还可以在管理里面启动服务:
计算机——右键——管理——服务和应用程序——服务——MySQL——启动:

或者

windows环境下mysql忘记密码如何重置详解数据库

出现这个提示。而且mysql后面紧跟的mysql57,mysqla又是什么东西?
看不明白,只好去网上找答案,网上也有说要找my.ini 文件的,也有说跟data文件夹有关的。然后我又看了一眼自己的mysql根目录:

windows环境下mysql忘记密码如何重置详解数据库

真的没有data文件夹,而且连my.ini配置文件都没有……哇!我都怀疑是不是装了一个假的数据库。又去bin文件夹里找,也没有my.ini文件。
然后又看到网上有大神说5.7版本以后的mysql好像就是没有data文件夹,解决办法就是,要么从别的数据库拷贝一个过来,要么用命令提示符重新生成一个data文件夹。
拷贝的当然不合适,最好还是用语句生成一个。
生成语句:mysqld –initialize-insecure –user=mysql
这个语句需要执行一段时间,执行完成之后,目录已经生成了一个data文件:

windows环境下mysql忘记密码如何重置详解数据库

这下应该没有什么问题了吧!net start mysql:

windows环境下mysql忘记密码如何重置详解数据库

还是启动不了……
难道是没有my.ini的原因?网上找了一下,my.ini是配置文件,不可能没有的。如果没有的话mysql是不能正常工作的。
而我的mysql是可以正常工作的,原因就是我刚刚上面修改权限的时候还用123456这个密码登录进去,修改成功了……
我突然想到我可以直接进入mysql,跟刚刚修改权限一样,修改一下密码就可以了,为什么非得纠结在这个net start mysql 呢?
于是 mysql -u root -p 登陆数据库。

use mysql;

update user set password=password(‘123’) where user = ‘root’;
如图:

windows环境下mysql忘记密码如何重置详解数据库

报错:不知道’password’是什么。
原来现在password已经不叫password了,而是叫 authentication_string:
update user set authentication_string=password(‘123’) where user = ‘root’;
然后刷新:
flush privileges;
关闭:
quit;
现在密码已经改成123了,现在你可以试一下用root和123登陆,看看能不能在navicat登陆上。反正我是没登上。
我已经绝望了。
出去吸了一支烟。
回来:
net start mysql57:

windows环境下mysql忘记密码如何重置详解数据库

请求的服务已经启动。
难道我的电脑装了两个mysql,导致冲突了???于是我又找到计算机管理,把mysql57服务停止,再启动mysql服务。没办法,又把mysql57下面
的那个可疑的mysqla服务停止,然而,
还是启动不起来。
于是我右键查看mysql的属性:

windows环境下mysql忘记密码如何重置详解数据库

可执行文件路径就是我一直在用的这个路径。
现在最大的疑点就是my.ini了。百度找了一圈,发现它竟然在programdata里:

PS: 我测试有效配置文件在“C:/Data/MySQL”

windows环境下mysql忘记密码如何重置详解数据库

为了验证这个ini文件究竟是不是mysql的文件,在my.ini 文件中找到[mysqld]字段,
并在下面添加skip-grant-tables,如图:

windows环境下mysql忘记密码如何重置详解数据库

然后回到命令提示符:
mysql -u root -p
不输入密码,直接回车,发现也进入了mysql.
(通过这个方法,在不知道密码的情况下进入mysql,然后修改root的密码,
update user set authentication_string=password(‘123’) where user = ‘root’;
步骤同我上面介绍的修改密码的方法一样。)

也就是说这个my.ini就是mysql的ini。
于是我又回到管理,找到mysql57的路径:
“C:/Program Files/MySQL/MySQL Server 5.7/bin/mysqld.exe” –defaults-file=”C:/ProgramData/MySQL/MySQL Server 5.7/my.ini” MySQL57
于是我又看了一眼mysqla的路径:
G:/phpstudy/mysql/bin/mysqld.exe MySQLa
哇,我好像突然明白到底是什么原因了……
于是我把mysqla服务停止,然后重新用navicat登陆mysql:

windows环境下mysql忘记密码如何重置详解数据库

原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/3863.html

(0)
上一篇 2021年7月16日
下一篇 2021年7月16日

相关推荐

发表回复

登录后才能评论