重置MySQL root密码的通用步骤(适用于MySQL 5.7及8.0版本):
方法一:通过跳过权限验证重置密码36
- 停止MySQL服务
# Windows
net stop MySQL80
# Linux(systemd系统)
sudo systemctl stop mysqld
- 以无权限模式启动MySQL
保持当前终端窗口运行(不要关闭):
# 需指定my.ini/my.cnf路径(Windows参考路径示例)
mysqld --defaults-file="C:\ProgramData\MySQL\MySQL Server 8.0\my.ini" --skip-grant-tables --shared-memory
- 重置密码
新开一个终端窗口执行:
mysql -u root
- 在MySQL交互界面输入:
FLUSH PRIVILEGES; -- 刷新权限(必须执行)
ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourNewPass'; -- MySQL 5.7+
-- 或(MySQL 8.0可能需要指定插件)
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'YourNewPass';
FLUSH PRIVILEGES; -- 再次刷新
EXIT;
- 重启MySQL服务
回到第2步的窗口按Ctrl+C终止无权限模式,然后重启服务:
# Windows
net start MySQL80
# Linux
sudo systemctl start mysqld
方法二:通过初始化文件重置密码4
- 创建初始化文件
新建文本文件mysql-init.txt,写入:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPassword';
- 启动MySQL时加载文件
mysqld --init-file=/path/to/mysql-init.txt --console
- 启动后密码即被修改,完成后删除初始化文件。
其他方法补充12
- 使用mysqladmin(需要旧密码):
mysqladmin -u root -p旧密码 password 新密码
- 直接修改user表(需谨慎):
UPDATE mysql.user SET authentication_string=PASSWORD('新密码') WHERE user='root';
FLUSH PRIVILEGES;
注意事项7
- 密码复杂度要求:MySQL 8.0默认要求强密码(包含大小写字母、数字、特殊字符)。
- 权限验证插件:若遇到身份验证错误,可指定mysql_native_password插件38。
- 跳过权限模式后必须重启服务,否则存在安全风险。
验证密码是否生效:
mysql -u root -p # 输入新密码测试登录