答案:可通过跳过权限验证重置 MySQL 密码。先停止 MySQL 服务,以 skip-grant-tables 模式启动,免密登录后根据版本使用 ALTER USER 或 UPDATE 语句修改 root 密码,刷新权限并重启服务即可。

忘记 MySQL 密码是常见问题,尤其是本地开发环境。可以通过跳过权限验证的方式重置 root 密码,整个过程安全且有效。以下是适用于 Windows、Linux 和 macOS 的完整操作步骤。
1. 停止 MySQL 服务
在重置密码前,先停止正在运行的 MySQL 服务。
Linux(Ubuntu/Debian):
sudo systemctl stop mysql
Linux(CentOS/RHEL):
sudo systemctl stop mysqld
macOS(使用 Homebrew 安装):
brew services stop mysql
Windows(管理员命令提示符):
net stop mysql
2. 跳过权限表启动 MySQL
以跳过授权表的方式启动 MySQL,这样无需密码即可登录。
Linux/macOS:
sudo mysqld –skip-grant-tables –skip-networking &
Windows:
找到 MySQL 安装目录下的 bin 文件夹,执行:
mysqld –skip-grant-tables –skip-networking
说明: –skip-grant-tables 让 MySQL 不加载权限表,允许免密登录;–skip-networking 防止其他用户连接,提升安全性。
3. 免密登录并修改密码
打开新终端或命令行窗口,使用 root 账户无密码登录。
mysql -u root
进入 MySQL 后,根据 MySQL 版本选择以下方式之一修改密码:
MySQL 5.7 及以上版本:
UPDATE mysql.user SET authentication_string = PASSWORD(‘ 新密码 ’) WHERE User = ‘root’;
ALTER USER ‘root’@’localhost’ IDENTIFIED BY ‘ 新密码 ’;
MySQL 8.0+ 推荐方式:
ALTER USER ‘root’@’localhost’ IDENTIFIED BY ‘ 你的新密码 ’;
刷新权限,使更改生效:
FLUSH PRIVILEGES;
退出 MySQL:
exit;
4. 正常重启 MySQL 服务
关闭当前跳过权限的 MySQL 进程,然后正常启动服务。
先杀掉 mysqld 进程:
ps aux | grep mysqld # 找到进程 ID
kill -9 进程 ID
然后启动 MySQL:
sudo systemctl start mysql # Linux Debian/Ubuntu
sudo systemctl start mysqld # Linux CentOS/RHEL
brew services start mysql # macOS
net start mysql # Windows
现在可以用新密码登录:
mysql -u root -p
输入你设置的新密码即可成功进入。
基本上就这些。操作时注意版本差异,尤其是 MySQL 8.0 之后的认证机制变化。只要按步骤来,重置密码并不复杂,但容易忽略刷新权限或未正确关闭临时进程。确保每一步执行到位,避免卡在登录环节。






























