找回MySQL密码的方法

方法一:使用--skip-grant-tables选项启动MySQL

  1. 停止MySQL服务
    Linux系统执行:sudo systemctl stop mysql
    Windows系统在服务管理器中停止MySQL服务

  2. 以跳过权限表方式启动MySQL
    sudo mysqld_safe --skip-grant-tables &

  3. 无密码登录MySQL
    mysql -u root

  4. 更新root密码

    UPDATE mysql.user SET authentication_string=PASSWORD('新密码') WHERE User='root';
    FLUSH PRIVILEGES;
    

  5. 重启MySQL服务
    sudo systemctl restart mysql

方法二:通过配置文件修改密码

  1. 编辑MySQL配置文件
    sudo nano /etc/mysql/my.cnf

  2. 在[mysqld]段添加
    skip-grant-tables

  3. 保存后重启MySQL
    sudo systemctl restart mysql

  4. 执行密码修改命令

    ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
    

  5. 移除配置文件中的skip-grant-tables并重启

方法三:使用init-file重置密码

  1. 创建密码重置文件
    echo "ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';" > /var/lib/mysql-init/reset.sql

  2. 安全模式启动MySQL
    mysqld --init-file=/var/lib/mysql-init/reset.sql

  3. 删除重置文件后正常启动

注意事项

  • 新密码需符合MySQL密码策略要求
  • 操作前建议备份重要数据
  • Windows系统需使用对应命令替换Linux命令
  • MySQL 5.7.6及以上版本使用authentication_string字段

更多推荐