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

 更新时间:2024年06月26日 11:03:23   作者:是谢添啊  
这篇文章主要介绍了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 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 作为示例。

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

net stop mysql575

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

image-20240625174905477

跳过密码授权。

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

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

image-20240625175028799

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

image-20240625175821605

清空密码

UPDATE mysql.user SET password=”” WHERE user=“root”;

exit;

接着,一定要关闭“跳出密码授权”窗口,在新窗口启动 mysql 服务并进入 mysql 管理。

# 1.启动 mysql 服务。格式:net start [服务名称]
net start mysql575

# 2.进入 mysql,无密码
mysql -uroot

修改密码并刷新权限。

-- 1.修改密码
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('123456');


-- 2.刷新权限
flush privileges;

-- 3.退出
exit;

再次登录。

mysql -uroot -p123456

image-20240625175603370

3.MySQL 5.7.6+(包括 5.7.6)

这里以 MySQL 5.7.35 作为示例。

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

net stop mysql57

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

image-20240625164735532

跳过密码授权。

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

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

image-20240625164943795

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

image-20240625175953864

清空密码

UPDATE mysql.user SET authentication_string=”” WHERE user=“root”;

exit;

接着,一定要关闭“跳出密码授权”窗口,在新窗口启动 mysql 服务并进入 mysql 管理。

# 1.启动 mysql 服务。格式:net start [服务名称]
net start mysql57

# 2.进入 mysql,无密码
mysql -uroot

修改密码并刷新权限。

-- 1.修改密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY "123456";

-- 2.刷新权限
flush privileges;

-- 3.退出
exit;

再次登录。

mysql -uroot -p123456

image-20240625180123964

4.MySQL 8.0

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

net stop mysql80

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

image-20240625171529375

跳过密码授权。

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

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

image-20240625170538451

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

image-20240625162953575

清空密码

UPDATE mysql.user SET authentication_string=”” WHERE user=“root”;

exit;

接着,一定要关闭“跳出密码授权”窗口,在新窗口启动 mysql 服务并进入 mysql 管理。

# 1.启动 mysql 服务。格式:net start [服务名称]
net start mysql80

# 2.进入 mysql,无密码
mysql -uroot

修改密码并刷新权限。

-- 1.修改密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY "123456";

-- 2.刷新权限
flush privileges;

-- 3.退出
exit;

再次登录。

mysql -uroot -p123456

image-20240625163503623

以上就是mysql忘记root密码的解决办法(针对不同mysql版本)的详细内容,更多关于mysql忘记root密码的资料请关注脚本之家其它相关文章!

相关文章

  • Mysql体系化探讨令人头疼的JOIN运算

    Mysql体系化探讨令人头疼的JOIN运算

    这篇文章主要介绍了体系化探讨令人头疼的JOIN运算,本文将对JOIN运算进行体系化深入的探讨,根据自己工作经验及参考业界经典案例,针对性地提出语法简化和性能优化的方法论,需要的朋友可以参考下
    2022-07-07
  • mysql排序ORDER BY不生效的问题解决

    mysql排序ORDER BY不生效的问题解决

    order by作为一个常用的功能,在项目中应该经常用到,本文主要介绍了mysql排序ORDER BY不生效的问题解决,具有一定的参考价值,感兴趣的可以了解一下
    2023-10-10
  • Ubuntu 服务器安装 MySQL 远程数据库的方法

    Ubuntu 服务器安装 MySQL 远程数据库的方法

    本篇介绍如何在 Linux 服务器上安装 MySQL 数据库,并设置为可远程连接,本文通过命令给大家介绍的非常详细,对Ubuntu 安装 MySQL远程数据库感兴趣的朋友一起看看吧
    2022-08-08
  • mysql中如何查询数据库中的表名

    mysql中如何查询数据库中的表名

    这篇文章主要介绍了mysql中如何查询数据库中的表名问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-12-12
  • MySQL表中添加时间戳的几种方法

    MySQL表中添加时间戳的几种方法

    这篇文章主要介绍了MySQL表中添加时间戳的几种方法,有张表的数据需要用同步工具同步至其他库,需要 update_time 时间戳字段 来做增量同步,需要的朋友可以参考下
    2019-06-06
  • mysql 本地数据库如何从远程数据库导数据

    mysql 本地数据库如何从远程数据库导数据

    mysql 本地数据库如何从远程数据库导数据,本文以此问题进行详细介绍,需要了解的朋友可以参考下
    2012-11-11
  • MySQL优化案例系列-mysql分页优化

    MySQL优化案例系列-mysql分页优化

    这篇文章主要介绍了MySQL优化案例系列-mysql分页优化,需要的朋友可以参考下
    2016-08-08
  • MySQL使用IF语句及用case语句对条件并结果进行判断 

    MySQL使用IF语句及用case语句对条件并结果进行判断 

    这篇文章主要介绍了MySQL使用IF语句及用case语句对条件并结果进行判断,文章通过围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-09-09
  • /var/log/pacct文件导致MySQL启动失败的案例分享

    /var/log/pacct文件导致MySQL启动失败的案例分享

    这篇文章主要介绍了/var/log/pacct文件导致MySQL启动失败的案例分享,这是个比较让人郁闷的问题,找不到MySQL启动失败的原因进可以按此文的方法试一试,需要的朋友可以参考下
    2015-01-01
  • SQL数据分表Mybatis Plus动态表名优方案

    SQL数据分表Mybatis Plus动态表名优方案

    这篇文章主要介绍了SQL数据分表Mybatis Plus动态表名优方案,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-08-08

最新评论