找回密码
 立即注册
搜索

[数据库] mysql8.0.39忘记root密码

[复制链接]
智慧谋略 发表于 2025-11-8 21:47:57 | 显示全部楼层 |阅读模式
当忘记 MySQL root 密码时,需要通过 “跳过权限验证” 的方式临时启动 MySQL,再重置密码,具体步骤如下(针对你的 MySQL 8.0.39 版本):
步骤 1:停止正在运行的 MySQL 服务
首先确保 MySQL 服务已完全停止,避免进程占用文件:
  1. # 若用systemd服务(之前创建的mysql.service)
  2. sudo systemctl stop mysql

  3. # 若用mysql.server脚本(在support-files目录)
  4. cd /usr/local/mysql/support-files/
  5. sudo ./mysql.server stop

  6. # 若以上命令无效,直接强制终止进程(确保是MySQL进程)
  7. sudo pkill mysqld
复制代码
步骤 2:以 “跳过权限验证” 模式启动 MySQL
这一步会让 MySQL 暂时不验证用户密码,允许无密码登录:
  1. # 进入MySQL的bin目录
  2. cd /usr/local/mysql/bin/

  3. # 跳过权限表启动(&表示后台运行,--user=mysql指定运行用户)
  4. sudo ./mysqld --skip-grant-tables --user=mysql &
复制代码
执行后,MySQL 会在后台启动,此时不需要密码即可登录。
步骤 3:无密码登录 MySQL
新开一个终端窗口(或保持当前窗口,直接执行),登录 root 用户:
  1. # 无密码登录(-u root 后面不加-p,直接回车)
  2. ./mysql -u root
复制代码
成功登录后,会进入 MySQL 命令行(提示符为mysql>)。
步骤 4:刷新权限并重置密码
在 MySQL 命令行中执行以下命令(关键步骤,8.0 + 版本必须先刷新权限):
sql
  1. -- 加载权限表(否则无法修改密码)
  2. FLUSH PRIVILEGES;

  3. -- 修改root本地登录密码(替换'新密码'为你的密码,需包含大小写、数字、特殊字符)
  4. ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
  5. #出现Query OK, 0 rows affected (0.36 sec),表示修改成功。

  6. -- 若需要允许root远程登录(谨慎开启,生产环境不建议),同时修改远程用户密码
  7. ALTER USER 'root'@'%' IDENTIFIED BY '新密码';  # 若不存在'root'@'%',可先忽略

  8. -- 再次刷新权限,确保修改生效
  9. FLUSH PRIVILEGES;

  10. -- 退出MySQL
  11. exit;
复制代码
步骤 5:重启 MySQL 服务(恢复正常模式)
先终止之前 “跳过权限验证” 的临时进程:
  1. sudo pkill mysqld
复制代码
用正常方式启动 MySQL:
  1. # 若用systemd服务
  2. sudo systemctl start mysql

  3. # 若用mysql.server脚本
  4. cd /usr/local/mysql/support-files/
  5. sudo ./mysql.server start
复制代码
步骤 6:验证新密码
用新密码登录,确认修改成功:
  1. # 进入bin目录(或已配置环境变量)
  2. cd /usr/local/mysql/bin/
  3. ./mysql -u root -p
复制代码
输入新密码,能成功进入 MySQL 命令行即表示密码重置完成。






懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
高级模式
B Color Image Link Quote Code Smilies

本版积分规则