如果您忘记了 MySQL 5.7 的 root 密码,可以按照以下步骤重置密码:

Windows 系统解决方法

方法一:使用 --init-file 方法(推荐)

  1. 停止 MySQL 服务:

    net stop mysql

    (如果服务名不是mysql,请使用您的实际服务名)

  2. 创建一个文本文件 C:\mysql-init.txt,内容为:

    ALTER USER 'root'@'localhost' IDENTIFIED BY '你的新密码';
  3. 以管理员身份运行CMD,执行:

    mysqld --init-file=C:\mysql-init.txt --console
  4. 启动成功后,按 Ctrl+C 停止,然后正常启动MySQL服务:

    net start mysql
  5. 删除或重命名 C:\mysql-init.txt 文件

方法二:使用 --skip-grant-tables

  1. 停止 MySQL 服务:

    net stop mysql
  2. 创建一个批处理文件 reset_password.bat,内容为:

    @echo off
    mysqld --skip-grant-tables --shared-memory --console
  3. 运行这个批处理文件,保持窗口打开

  4. 打开另一个CMD窗口,连接MySQL:

    mysql -u root
  5. 执行以下SQL命令:

    FLUSH PRIVILEGES;
    ALTER USER 'root'@'localhost' IDENTIFIED BY '你的新密码';
    FLUSH PRIVILEGES;
    exit;
  6. 关闭第一个CMD窗口,然后正常启动MySQL服务

 

Linux 系统解决方法

  1. 停止MySQL服务:

    sudo systemctl stop mysql
  2. 启动MySQL跳过权限检查:

    sudo mysqld_safe --skip-grant-tables --skip-networking &
  3. 连接MySQL:

    mysql -u root
  4. 执行以下命令(MySQL 5.7+版本):

    FLUSH PRIVILEGES;
    ALTER USER 'root'@'localhost' IDENTIFIED BY '你的新密码';
    FLUSH PRIVILEGES;
    exit;
  5. 重启MySQL服务:

    sudo systemctl restart mysql

注意事项

  1. 密码复杂度要求:MySQL 5.7默认要求密码包含大小写字母、数字和特殊字符

  2. 操作完成后,务必删除包含密码的临时文件

  3. 如果是生产环境,重置密码后可能需要更新应用程序配置

  4. 如果使用远程连接,还需要重置 'root'@'%' 用户的密码

如果遇到任何问题,可以查看MySQL错误日志获取更多信息,错误日志通常位于:

  • Windows: C:\ProgramData\MySQL\MySQL Server 5.7\Data\*.err

  • Linux: /var/log/mysqld.log 或 /var/log/mysql/error.log