翼度科技»论坛 编程开发 mysql 查看内容

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

4

主题

4

帖子

12

积分

新手上路

Rank: 1

积分
12
1.前提说明


1.1 cmd 窗口打开方式

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

1.2 mysql 服务相关命令知识补充
  1. # 安装 mysql 服务
  2. mysqld -install

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

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

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

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

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

  14. # 停止 mysql80 服务,格式:net stop [ServiceName]
  15. 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 版本开始,
  1. mysql.user
复制代码
表中的
  1. password
复制代码
列已被废弃,并且从 MySQL 8.0 版本中完全移除。在 MySQL 5.7.6 及以后的版本中,密码存储在
  1. authentication_string
复制代码
列中,该列使用的是新的身份验证插件和密码哈希算法。
MySQL 5.7.6 官方文档原文
The column in the
  1. mysql.user
复制代码
table now stores credential information for all accounts. The
  1. Password
复制代码
column, previously used to store password hash values for accounts authenticated with the
  1. mysql_native_password
复制代码
and
  1. mysql_old_password
复制代码
plugins, is removed.

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

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

跳过密码授权命令报错

执行
  1. mysqld --console --skip-grant-tables --shared-memory
复制代码
时窗口未卡主,且有 [ERROR]

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


修改密码时报错


报错: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 服务导致的,因此只需要通过
  1. net start [ServiceName]
复制代码
打开 Mysql 服务即可。
例如:
  1. net start mysql57
复制代码
2.MySQL 5.7.6-(不包括 5.7.6)
  1. 这里以 MySQL 5.7.5 作为示例。
复制代码
打开 cmd,停止 MySQL 服务,格式:
  1. net stop [服务名称]
复制代码
。我这里的服务名称是
  1. MySQL575
复制代码
,你的可能是
  1. mysql
复制代码
,因为
  1. mysql
复制代码
是默认的服务名称。
  1. net stop mysql575
复制代码
服务名称查找方式:
  1. win + r
复制代码
打开“运行”,输入
  1. services.msc
复制代码
,查找你的 MySQL 服务名称。

跳过密码授权。
  1. mysqld --console --skip-grant-tables --shared-memory
复制代码
注意这个
  1. mysqld
复制代码
需要在环境变量下配置到 mysql 的 bin 目录,或者直接在 bin 目录下执行该指令。

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

清空密码
  1. UPDATE mysql.user SET password=”” WHERE user=“root”;

  2. exit;
复制代码
接着,一定要关闭“跳出密码授权”窗口,在新窗口启动 mysql 服务并进入 mysql 管理。
  1. # 1.启动 mysql 服务。格式:net start [服务名称]
  2. net start mysql575

  3. # 2.进入 mysql,无密码
  4. mysql -uroot
复制代码
修改密码并刷新权限。
  1. -- 1.修改密码
  2. SET PASSWORD FOR 'root'@'localhost' = PASSWORD('123456');


  3. -- 2.刷新权限
  4. flush privileges;

  5. -- 3.退出
  6. exit;
复制代码
再次登录。
  1. mysql -uroot -p123456
复制代码


3.MySQL 5.7.6+(包括 5.7.6)
  1. 这里以 MySQL 5.7.35 作为示例。
复制代码
打开 cmd,停止 MySQL 服务,格式:
  1. net stop [服务名称]
复制代码
。我这里的服务名称是
  1. MySQL57
复制代码
,你的可能是
  1. mysql
复制代码
,因为
  1. mysql
复制代码
是默认的服务名称。
  1. net stop mysql57
复制代码
服务名称查找方式:
  1. win + r
复制代码
打开“运行”,输入
  1. services.msc
复制代码
,查找你的 MySQL 服务名称。

跳过密码授权。
  1. mysqld --console --skip-grant-tables --shared-memory
复制代码
注意这个
  1. mysqld
复制代码
需要在环境变量下配置到 mysql 的 bin 目录,或者直接在 bin 目录下执行该指令。

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

清空密码
  1. UPDATE mysql.user SET authentication_string=”” WHERE user=“root”;

  2. exit;
复制代码
接着,一定要关闭“跳出密码授权”窗口,在新窗口启动 mysql 服务并进入 mysql 管理。
  1. # 1.启动 mysql 服务。格式:net start [服务名称]
  2. net start mysql57

  3. # 2.进入 mysql,无密码
  4. mysql -uroot
复制代码
修改密码并刷新权限。
  1. -- 1.修改密码
  2. ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY "123456";

  3. -- 2.刷新权限
  4. flush privileges;

  5. -- 3.退出
  6. exit;
复制代码
再次登录。
  1. mysql -uroot -p123456
复制代码


4.MySQL 8.0

打开 cmd,停止 MySQL 服务,格式:
  1. net stop [服务名称]
复制代码
。我这里的服务名称是
  1. MySQL80
复制代码
,你的可能是
  1. mysql
复制代码
,因为
  1. mysql
复制代码
是默认的服务名称。
  1. net stop mysql80
复制代码
服务名称查找方式:
  1. win + r
复制代码
打开“运行”,输入
  1. services.msc
复制代码
,查找你的 MySQL 服务名称。

跳过密码授权。
  1. mysqld --console --skip-grant-tables --shared-memory
复制代码
注意这个
  1. mysqld
复制代码
需要在环境变量下配置到 mysql 的 bin 目录,或者直接在 bin 目录下执行该指令。

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

清空密码
  1. UPDATE mysql.user SET authentication_string=”” WHERE user=“root”;

  2. exit;
复制代码
接着,一定要关闭“跳出密码授权”窗口,在新窗口启动 mysql 服务并进入 mysql 管理。
  1. # 1.启动 mysql 服务。格式:net start [服务名称]
  2. net start mysql80

  3. # 2.进入 mysql,无密码
  4. mysql -uroot
复制代码
修改密码并刷新权限。
  1. -- 1.修改密码
  2. ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY "123456";

  3. -- 2.刷新权限
  4. flush privileges;

  5. -- 3.退出
  6. exit;
复制代码
再次登录。
  1. mysql -uroot -p123456
复制代码

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

来源:https://www.jb51.net/database/32331509l.htm
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

举报 回复 使用道具