停止MySQL服务:Linux用sudo systemctl stop mysql,Windows在服务中停止或执行net stop mysql。2. 跳过权限启动:Linux运行sudo mysqld --skip-grant-tables --skip-networking &,Windows以管理员身份运行mysqld --skip-grant-tables --console。3. 无密码登录并改密:mysql -u root进入后执行FLUSH PRIVILEGES;,根据版本用ALTER USER或UPDATE语句设置新密码。4. 重启服务:关闭跳过权限的进程,正常启动MySQL,用新密码登录验证。

MySQL密码忘了不用慌,可以通过跳过权限验证的方式重置密码。整个过程不会丢失数据,只要按步骤操作即可恢复访问。以下是适用于Windows和Linux系统的完整重置流程。
1. 停止MySQL服务
要修改密码,先得停止正在运行的MySQL服务。
Linux系统:打开终端,执行以下命令:
- sudo systemctl stop mysql
- sudo service mysql stop
或(根据发行版不同):
按下 Win + R,输入 services.msc,找到 MySQL 服务,右键选择“停止”。
或者在命令提示符(以管理员身份运行)中执行:
- net stop mysql
如果服务名是 mysql80 或其他,请使用对应名称。
2. 跳过权限验证启动MySQL
这一步是关键,让MySQL不加载权限表,从而无需密码登录。
Linux系统:进入MySQL的bin目录(通常为 /usr/bin/),然后运行:
- sudo mysqld --skip-grant-tables --skip-networking &
--skip-grant-tables 表示跳过权限检查,--skip-networking 防止其他用户趁机登录,提升安全性。
Windows系统:以管理员身份打开命令提示符,进入MySQL的bin目录(如 C:\Program Files\MySQL\MySQL Server 8.0\bin),执行:
- mysqld --skip-grant-tables --console
这个命令会占用当前窗口,不要关闭它。
3. 无密码登录并修改密码
新开一个终端或命令行窗口,连接MySQL。
- mysql -u root
此时应该能直接进入MySQL命令行界面。
接下来刷新权限表(必须先执行):
- FLUSH PRIVILEGES;
然后根据你的MySQL版本设置新密码:
MySQL 5.7 及以下:- UPDATE mysql.user SET authentication_string=PASSWORD('新密码') WHERE User='root';
- ALTER USER 'root'@'localhost' IDENTIFIED BY '你的新密码';
如果你不确定用户主机,可以先查一下:
- SELECT User, Host FROM mysql.user;
如果有 'root'@'%' 也需要更新:
- ALTER USER 'root'@'%' IDENTIFIED BY '新密码';
改完后执行:
- FLUSH PRIVILEGES;
- exit;
4. 正常重启MySQL服务
关闭之前用 --skip-grant-tables 启动的进程,然后正常启动MySQL。
Linux系统:- sudo killall mysqld
- sudo systemctl start mysql
- 在任务管理器中结束 mysqld 进程
- net start mysql
现在可以用新密码登录测试:
- mysql -u root -p
基本上就这些。整个过程安全可靠,关键是注意版本差异,尤其是MySQL 8.0之后的认证方式变化。操作时别忘了刷新权限,不然修改可能不生效。










