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 密码。操作时注意关闭数据库连接,避免进程占用导致失败。
nat123映射怎么用?超详细步骤,外网访问内网轻松搞定
nat123域名怎么用?两种方式轻松搞定
nat123怎么用?简单几步实现内网穿透
内网穿透工具对比:nat123、花生壳与轻量新选择
远程访问内网很简单:用对工具,一“箭”穿透
ngrok下载完全指南:从入门到获取客户端
内网远程桌面软件:穿透局域网边界的数字窗口
从外网远程访问内网服务器的完整方案
Windows Server 2008端口转发完全教程:netsh命令添加/查看/删除/重置
为什么三层交换机转发比Linux服务器快?转发表硬件加速的秘密