mysql 忘记 root 密码的解决办法(针对不同 mysql 版本)

1.前提说明

1.1 cmd 窗口打开方式

cmd 命令窗口请以“管理员”身份打开运行,否则可能提示权限不足。(net 命令需要管理员权限)

1.2 mysql 服务相关命令知识补充

# 安装 mysql 服务
mysqld -install

# 安装 mysql 服务并指定服务名称,格式:mysqld -install [ServiceName]
# 如果不指定服务名,默认的服务名称为 mysql
mysqld -install mysql80

# 移除 mysql 服务,格式:mysqld --remove [ServiceName]
mysqld --remove mysql80

# 启动 mysql80 服务,格式:net start [ServiceName]
net start mysql80

# 查看正在运行的所有服务
net start

# 查看特定服务,通过字符串过滤完成,格式:net start | findstr [ServiceName]
net start | findstr mysql80

# 停止 mysql80 服务,格式:net stop [ServiceName]
net stop mysql80

1.3 三个 mysql 版本说明

文章共给出三个 MySQL 阶段版本的忘记密码解决办法,分别是:

  • MySQL 5.7.6 以前
  • MySQL 5.7.6 及以后(MySQL 8.0 以前)
  • MySQL 8.0+

MySQL 有一个 5.7.6 分界线,是由于从 MySQL 5.7.6 版本开始,mysql.user 表中的 password 列已被废弃,并且从 MySQL 8.0 版本中完全移除。在 MySQL 5.7.6 及以后的版本中,密码存储在 authentication_string 列中,该列使用的是新的身份验证插件和密码哈希算法。

MySQL 5.7.6 官方文档原文

The authentication_string column in the mysql.user table now stores credential information for all accounts. The Password column, previously used to store password hash values for accounts authenticated with the mysql_native_password and mysql_old_password plugins, is removed.

1.4 运行时可能发生的报错问题

如果严格按照我的步骤来,应当是不会报错的,但如果漏掉了某些步骤,可能会发生命令报错。

🍀 跳过密码授权命令报错

执行 mysqld --console --skip-grant-tables --shared-memory 时窗口未卡主,且有 [ERROR]

image-20240625180832782

这是由于没有执行我给的步骤 1“停止 MySQL 服务”,因此,在执行 net stop [mysql服务名] 后,窗口就会卡主且不会有报错了。

image-20240625180734331

🍀 修改密码时报错

image-20240625181124106

报错:ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement

这是由于没有关闭“跳过密码授权”窗口导致的,因此只需要关闭授权窗口即可。

🍀 ERROR 2003 (HY000): Can’t connect to MySQL server on ‘localhost’

这是由于关闭了 mysql 服务导致的,因此只需要通过 net start [ServiceName] 打开 Mysql 服务即可。

例如:

net start mysql57

2.MySQL 5.7.6-(不包括 5.7.6)

这里以 MySQL 5.7.5 作为示例。

  1. 打开 cmd,停止 MySQL 服务,格式:net stop [服务名称]。我这里的服务名称是 MySQL575,你的可能是 mysql,因为 mysql 是默认的服务名称。

    net stop mysql575
    

    服务名称查找方式:win + r 打开“运行”,输入 services.msc,查找你的 MySQL 服务名称。

    image-20240625174905477

  2. 跳过密码授权。

    mysqld --console --skip-grant-tables --shared-memory
    

    注意这个 mysqld 需要在环境变量下配置到 mysql 的 bin 目录,或者直接在 bin 目录下执行该指令。

    image-20240625175028799

  3. 打开一个新的 cmd 窗口,输入 mysql 可直接进行 mysql 管理。注意“跳过密码授权”这个 cmd 窗口不要关闭。

    image-20240625175821605

  4. 清空密码

    UPDATE mysql.user SET password=”” WHERE user=“root”;
    
    exit;
    
  5. 接着,一定要关闭“跳出密码授权”窗口,在新窗口启动 mysql 服务并进入 mysql 管理。

    # 1.启动 mysql 服务。格式:net start [服务名称]
    net start mysql575
    
    # 2.进入 mysql,无密码
    mysql -uroot
    
  6. 修改密码并刷新权限。

    -- 1.修改密码
    SET PASSWORD FOR 'root'@'localhost' = PASSWORD('123456');
    
    
    -- 2.刷新权限
    flush privileges;
    
    -- 3.退出
    exit;
    
  7. 再次登录。

    mysql -uroot -p123456
    

    image-20240625175603370

3.MySQL 5.7.6+(包括 5.7.6)

这里以 MySQL 5.7.35 作为示例。

  1. 打开 cmd,停止 MySQL 服务,格式:net stop [服务名称]。我这里的服务名称是 MySQL57,你的可能是 mysql,因为 mysql 是默认的服务名称。

    net stop mysql57
    

    服务名称查找方式:win + r 打开“运行”,输入 services.msc,查找你的 MySQL 服务名称。

    image-20240625164735532

  2. 跳过密码授权。

    mysqld --console --skip-grant-tables --shared-memory
    

    注意这个 mysqld 需要在环境变量下配置到 mysql 的 bin 目录,或者直接在 bin 目录下执行该指令。

    image-20240625164943795

  3. 打开一个新的 cmd 窗口,输入 mysql 可直接进行 mysql 管理。注意“跳过密码授权”这个 cmd 窗口不要关闭。

    image-20240625175953864

  4. 清空密码

    UPDATE mysql.user SET authentication_string=”” WHERE user=“root”;
    
    exit;
    
  5. 接着,一定要关闭“跳出密码授权”窗口,在新窗口启动 mysql 服务并进入 mysql 管理。

    # 1.启动 mysql 服务。格式:net start [服务名称]
    net start mysql57
    
    # 2.进入 mysql,无密码
    mysql -uroot
    
  6. 修改密码并刷新权限。

    -- 1.修改密码
    ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY "123456";
    
    -- 2.刷新权限
    flush privileges;
    
    -- 3.退出
    exit;
    
  7. 再次登录。

    mysql -uroot -p123456
    

    image-20240625180123964

4.MySQL 8.0

  1. 打开 cmd,停止 MySQL 服务,格式:net stop [服务名称]。我这里的服务名称是 MySQL80,你的可能是 mysql,因为 mysql 是默认的服务名称。

    net stop mysql80
    

    服务名称查找方式:win + r 打开“运行”,输入 services.msc,查找你的 MySQL 服务名称。

    image-20240625171529375

  2. 跳过密码授权。

    mysqld --console --skip-grant-tables --shared-memory
    

    注意这个 mysqld 需要在环境变量下配置到 mysql 的 bin 目录,或者直接在 bin 目录下执行该指令。

    image-20240625170538451

  3. 打开一个新的 cmd 窗口,输入 mysql 可直接进行 mysql 管理。注意“跳过密码授权”这个 cmd 窗口不要关闭。

    image-20240625162953575

  4. 清空密码

    UPDATE mysql.user SET authentication_string=”” WHERE user=“root”;
    
    exit;
    
  5. 接着,一定要关闭“跳出密码授权”窗口,在新窗口启动 mysql 服务并进入 mysql 管理。

    # 1.启动 mysql 服务。格式:net start [服务名称]
    net start mysql80
    
    # 2.进入 mysql,无密码
    mysql -uroot
    
  6. 修改密码并刷新权限。

    -- 1.修改密码
    ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY "123456";
    
    -- 2.刷新权限
    flush privileges;
    
    -- 3.退出
    exit;
    
  7. 再次登录。

    mysql -uroot -p123456
    

    image-20240625163503623

  • 29
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
如果你忘记MySQLroot密码,可以通过以下步骤来重置密码。首先,你需要停止MySQL服务。然后,在MySQL配置文件(通常是/etc/my.cnf)中找到并注释掉skip-grant-tables这一行,保存并退出配置文件。接下来,启动MySQL服务。现在你可以以无密码的方式登录到MySQL。在MySQL命令行中执行以下命令来修改root用户的密码:update mysql.user set authentication_string=password('newpassword') where user='root'; (注意将newpassword替换为你想要设置的新密码)。然后,刷新权限以使修改生效:flush privileges; 最后,退出MySQL命令行并重新启动MySQL服务。现在你可以使用新设置的root密码登录到MySQL了。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Mysql数据库 root用户密码忘记怎么办?](https://blog.csdn.net/CRMEB/article/details/117771509)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [MySQL忘记root密码(唯一好用的方法)](https://blog.csdn.net/u012154840/article/details/104375578)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是谢添啊

感谢你的支持,我会继续加油的

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值