打算用mysql写实验报告,结果发现自己忘记密码了,找了大半个晚上基本上网上的坑全部踩完了,现在记录一下。
注意下面的任何操作都最好在管理员权限下操作
一:
首先当然是停止一下你的mysql服务,但是很多人用net start mysql的时候就会报错了,原因有两个:
1:是你没有用管理员权限打开(可能性小)
2:MySQL服务器名称不正确(可能性很大)
Win+R输入services.msc,找到mysql服务名称,你就会发现你的名称叫mysql80
好的,然后现在运行
net start mysql80
把mysql服务器关掉是为了之后运行免密登录的操作
二:
因为mysql8.0之后–skip-grant-tables无效,需要在mysql的bin目录中使用mysqld --console --skip-grant-tables --shared-memory,
什么?找不到mysql的bin目录?还是Win+R输入services.msc,双击mysql80,然后你就可以在常规里面看见他的路径
好的,那么现在找到路径之后,运行mysqld --console --skip-grant-tables --shared-memory,我就会出现下面的报错:[ERROR] [MY-013276] [Server] Failed to set datadir to ‘F:\Mysql\mysql-8.0.19-winx64\data\‘ (OS er
这是说明你没有成功执行,你需要执行下面的操作:
mysqld --initialize --user=mysql --console
mysqld -install
然后出现下面的界面就说明可以了
(但是我运行完这个命令之后,它一直不退出,如果等太久的话你可以直接做第三步,不一定要等他执行完。 )
参考:https://blog.csdn.net/hanhanwanghaha/article/details/105599321
三
新开一个cmd,然后直接mysql -uroot -p就可以实现免密登录了,但是我们现在还需要修改一下密码
(1)将 root 用户 authentication_string 字段内存清空
use mysql;
update user set authentication_string='' where user='root';
注意,运行完命令成功之后之后,这个命令行窗口不要关闭。
(2)设置 root 用户的密码
use mysql;
ALTER user 'root'@'localhost' IDENTIFIED BY '你的新密码';
等显示 Query OK, 0 rows affected 就表示密码设置成功了。
(3)验证
我们可以验证一下刚才设置的密码,关闭当前所有命令行窗口。新打开一个命令行,输入第一步的命令回车,将刚才设置的密码输入进去,回车,看看是不是成功进入 MySQL 数据库了。
成功之后就可以删除之前的命令行了