好久之前在电脑下载的MySQL,最近准备使用MySQL的时候发现忘记密码了,试了很多次印象中的密码都无法登录,所以只好上网搜索一下在忘记密码的情况下如何重置密码,网上有很多中方法,但是我试过很多都无法解决,对于我而言,也就是说我使用其中一个人的方法无法解决,然后去使用另一个人的方法也无法解决,然后我综合了网上很多人的方法之后最后成功了,所以在这里我将我总结的方法写出来,详细一点,供大家参考。
我们首先打开cmd终端,执行如下命令:
net stop mysql
在这里我们可能会出现第一个问题,那就是显示服务名无效
。出现这个错误的原因是系统中并没有注册mysql到服务中,即当前路径下没有mysql服务。如果出现这个错误,我们就需要进入MySQL安装目录下的bin目录中继续执行如下命令:
mysqld --install
执行上述命令之后如果出现Service successfully install
代表你已经安装成功。
如果执行上述命令之后出现Install/Remove of the Service Denied
则需要使用管理员的身份运行。
然后再执行上面的停止命令,出现如下图即停止成功:
这里还会出现一个问题那就是:
如果出现入上图所示问题,我们需要先启动mysql服务。
我们继续使用管理员的权限在bin目录下执行如下启动命令:
net start mysql
运行这个命令也会出现新的问题:
这个时候我们需要删除mysql下的data文件,重新执行mysqld --initialize
命令就可以在当前路径下生成data文件夹,再执行net start mysql 就可以启动mysql。
如果还是无法启动的话,我们再次输入如下命令:
mysqld --console
如果出现以下显示端口被占用问题:
我们再执行如下命令查看3306端口进程ID:
netstat -aon|findstr "3306"
从这张图我们可以看见3306端口被占用,进程ID 是6884,这个时候我们需要执行如下命令结束当前进程:
taskkill /f /pid 6884
然后再执行启动服务就可以成功启动了。
启动完之后我们再执行停止命令即可。
紧接着我们使用管理员的身份登录终端,然后进入MySQL安装目录下的bin目录中执行如下命令:
mysqld -console --skip-grant-tables --shared-memory
如果输入执行之后没有返回的话我们就再开一个cmd重新使用管理员身份登录终端,然后进入MySQL安装目录下的bin目录中执行以下命令:
mysqld --console --skip-grant-tables --shared-memory
出现如上信息就说明我们已经成功跳过mysql的密码登录了。
执行完以上操作之后,我们再重新开一个cmd,还是使用管理员身份登录终端,然后进入MySQL安装目录下的bin目录中执行以下命令:
mysql -u root -p
此时会显示让你输入密码,直接回车就可以成功连接mysql。
我们依次执行如下命令:
UPDATE mysql.user SET authentication_string=null WHERE User='root';
FLUSH PRIVILEGES;
exit;
执行完之后我们再登录一遍mysql,再次在mysql中执行如下语句重置密码:
ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'yourpasswd';
到这里我们的密码重置就成功了,但是这个有个问题那就是网上有很多重置密码的语句是执行不了的,例如:
use mysql;
UPDATE user SET authentication_string = password ('[$Password]') WHERE User = 'root';
我们执行这个命令会报错:
出现这个报错是因为MySQL 8.0.15(也可能早于此)上,这个PASSWORD()
功能没有作用了,应该是被废除了。我们需要执行我上面说的新的指令才能执行成功。
我们首先关闭所有的终端,然后在新建终端输入启动mysql服务指令:
net start mysql
现在服务启动成功之后,我们再次执行登录指令:
mysql -u root -p
然后输入我们重置后的密码进行登录。
可以看见我们可以成功登录了,证明重置成功了。
如果登录mysql的时候报错[ERROR 1130 (HY000): Host '' is not allowed to connect to this MySQL server [duplicate\]](https://stackoverflow.com/questions/19101243/error-1130-hy000-host-is-not-allowed-to-connect-to-this-mysql-server)
那么证明你还没有重置成功可以从第一步重新再试一遍。
本期博客针对的是Windows中MySQL 8.x版本
的重置密码操作,如果你是其他操作系统或者其他MySQL版本可能无法成功重置,需要去网上看看其他版本的操作方法,最后希望本次博客能够帮助你们成功重置密码,我也是研究了好一会才解决的,比较麻烦,整理总结不易,期待得到你们的支持,谢谢!