1. 管理员身份进入cmd 命令窗口 输入 net stop mysql,把mysql服务先关掉:
2.设置无验证方式启动mysql服务
mysql版本为8.0以下,输入mysqld --skip-grant-tables
mysql版本为8.0以上,输入mysqld --console --skip-grant-tables --shared-memory
看到光标一直闪烁就成功了。 进行下一步。
注意:mysql 不是内部命令也不是外部命令是由于mysql环境变量没有配置。
注意:如果遇到mysqld: Can’t change dir to ‘C:\Program Files\MySQL\MySQL Server 5.7\data’ (OS errno 2 - No such file or directory)错误
解决办法:勾选显示隐藏的项目,找到ProgramData文件夹,在C:\ProgramData\MySQL\MySQL Server 8.0路径下找到my.ini文件,复制粘贴到C:\Program Files\MySQL\MySQL Server 8.0目录下即可
然后另起一个命令窗口重复1.2. 看到光标一直闪烁就成功了
3.无验证登陆数据库+修改密码
重新打开一个cmd窗口,输入mysql,敲回车就可以成功登陆mysql了
USE mysql;
方式一
UPDATE USER SET PASSWORD = PASSWORD('新密码') WHERE USER = '用户名';
方式二
SET PASSWORD FOR '用户名'@'主机名' = PASSWORD('新密码');
若更改密码出现 ERROR 1046 (3D000): No database selected 则是数据库表字段没有password 改成authentication_string 即可 退出mysql
mysql> use mysql
Database changed
mysql> update user set password=password('root') where user='root' and host='localhost';
ERROR 1046 (3D000): No database selected
mysql> update user set authentication_string = password('root') where user = 'root';
Query OK, 1 row affected, 1 warning (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 1
4.重启mysql
不用慌,这是正常的,接下来我们就找到问题解决,先输入tasklist| findstr "mysql 命令找出占用的程序,然后taskkill/f /t /im mysqld.exe 把这些程序终止就能正常启动了:
然后重进输入新密码即可