mysql忘记root密码,重置密码的操作步骤

首页 2025-09-20 10:40:25


当忘记 MySQL 的 root 密码时,可以通过以下步骤重置密码,不同操作系统的操作略有差异:

一、Linux 系统重置 MySQL root 密码

1. 停止 MySQL 服务

bash
# CentOS/RHEL
systemctl stop mysqld
# 或
service mysqld stop

# Ubuntu/Debian
systemctl stop mysql
# 或
service mysql stop
 

2. 跳过权限验证启动 MySQL

以跳过权限表的方式启动 MySQL,此时无需密码即可登录:
bash
# 方法1:直接执行(适用于大多数版本)
mysqld_safe --skip-grant-tables --skip-networking &

# 方法2:若上述命令无效,编辑配置文件
# 编辑my.cnf(通常在/etc/my.cnf或/etc/mysql/my.cnf)
vi /etc/my.cnf
# 在[mysqld]下添加一行
skip-grant-tables
# 保存后启动服务
systemctl start mysqld
 

3. 无密码登录 MySQL

bash
mysql -u root  # 直接登录,无需输入密码
 

4. 重置 root 密码

根据 MySQL 版本不同,密码字段名称可能不同:
  • MySQL 5.7 及以上(密码字段为authentication_string):
    sql
    -- 切换到mysql系统库
    use mysql;
    
    -- 重置密码(注意替换新密码)
    ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
    
    -- 若报"ERROR 1290 (HY000)",执行以下命令更新
    update user set authentication_string=PASSWORD('新密码') where user='root';
    
     
     
  • MySQL 5.6 及以下(密码字段为password):
    sql
    use mysql;
    update user set password=PASSWORD('新密码') where user='root';
    
     
     

5. 刷新权限并退出

sql
flush privileges;  # 刷新权限
exit;  # 退出MySQL
 

6. 恢复正常启动

bash
# 若用方法1启动,先结束进程
pkill mysqld

# 若用方法2修改了配置文件,删除skip-grant-tables行
vi /etc/my.cnf

# 重启MySQL服务
systemctl start mysqld  # 或 service mysqld start
 

7. 验证新密码

bash
mysql -u root -p  # 输入新密码登录,验证是否生效
 

二、Windows 系统重置 MySQL root 密码

1. 停止 MySQL 服务

  • 方法 1:服务管理器中找到MySQL服务,右键【停止】。
  • 方法 2:CMD 命令行(管理员身份):
    bash
    net stop mysql
    
     
     

2. 跳过权限验证启动

  • 打开 CMD,进入 MySQL 的 bin 目录(如cd C:\Program Files\MySQL\MySQL Server 8.0\bin)。
  • 执行命令跳过权限表:
    bash
    mysqld --console --skip-grant-tables --shared-memory
    
     
     
    (保持此窗口打开,不要关闭)

3. 新窗口无密码登录

  • 另开一个 CMD 窗口,进入 bin 目录,执行:
    bash
    mysql -u root
    
     
     

4. 重置密码(同 Linux 步骤 4)

sql
use mysql;

-- MySQL 8.0及以上(推荐用ALTER USER)
ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';

-- 若报错,尝试更新authentication_string
update user set authentication_string='' where user='root';  # 先清空
flush privileges;
ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
 

5. 重启服务

  • 关闭所有 CMD 窗口,在服务管理器中重启MySQL服务。
  • 用新密码登录验证。

注意事项

  1. MySQL 8.0+ 密码策略:可能要求密码包含大小写字母、数字和特殊字符,若提示密码不符合策略,可放宽限制:
    sql
    set global validate_password.policy=LOW;  # 降低密码复杂度
    set global validate_password.length=6;    # 最短6位
    
     
     
  2. 远程登录权限:若需要 root 远程登录,可执行:
    sql
    update user set host='%' where user='root';
    flush privileges;
    
     
     
通过以上步骤,即可成功重置 MySQL 的 root 密码。操作时注意关闭数据库连接,避免进程占用导致失败。
MySQL连接就这么简单!本地远程、编程语言连接方法一网打尽
还在为MySQL日期计算头疼?这份加一天操作指南能解决90%问题
MySQL日志到底在哪里?Linux/Windows/macOS全平台查找方法在此
MySQL数据库管理工具全景评测:从Workbench到DBeaver的技术选型指南
MySQL密码忘了怎么办?这份重置指南能救急,Windows/Linux/Mac都适用
你的MySQL为什么经常卡死?可能是锁表在作怪!快速排查方法在此
MySQL单表卡爆怎么办?从策略到实战,一文掌握「分表」救命技巧
清空MySQL数据表千万别用错!DELETE和TRUNCATE这个区别可能导致重大事故
你的MySQL中文排序一团糟?记住这几点,轻松实现准确拼音排序!
别再混淆Hive和MySQL了!读懂它们的天壤之别,才算摸到大数据的门道