linux mysql8忘记密码的解决方案

 更新时间:2026年04月17日 09:37:02   作者:搬砖的梦先生  
本文介绍了两种MySQL重置密码的方法:一是关闭登录验证重置密码,二是开启登录验证后重置密码,前者需要修改my.cnf配置文件并添加skip-grant-tables,后者则需删除此配置并直接输入新密码

1、关闭mysql登录验证

停止mysql

$ systemctl stop mysqld.service

修改/etc/my.cnf,跳过权限验证

在my.cnf 下面添加

skip-grant-tables

启动mysql

$ systemctl start mysqld.service

2、重置mysql密码

重置root密码为空

update user set authentication_string='' where user='root';

查看root密码是否为空

select user, authentication_string from mysql.user;

保存修改

flush privileges;

示例如下:

$ mysql -u root
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 7
Server version: 8.0.32 Source distribution

Copyright (c) 2000, 2023, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed

mysql> update user set authentication_string='' where user='root';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> select user, authentication_string from mysql.user;
+------------------+------------------------------------------------------------------------+
| user             | authentication_string                                                  |
+------------------+------------------------------------------------------------------------+
| root             |                                                                        |
| mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| mysql.session    | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| mysql.sys        | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
+------------------+------------------------------------------------------------------------+
6 rows in set (0.01 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql> \q
Bye

3、开启mysql登录验证

停止mysql

$ systemctl stop mysqld.service

修改/etc/my.cnf,把my.cnf 下面添加的skip-grant-tables删除

启动mysql

$ systemctl start mysqld.service

4、修改mysql密码

使用下面命令登录,在输入密码的那一步直接回车

$ mysql -uroot -p

修改root密码

‘root’@‘%’: root可以允许任务机器连接

alter user 'root'@'%' identified by '你的密码';

查看root密码

select user, authentication_string from mysql.user;

保存修改

flush privileges;

示例如下:

$ mysql -uroot -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.32 Source distribution

Copyright (c) 2000, 2023, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> alter user 'root'@'%' identified by 'mysql.root_2023';
Query OK, 0 rows affected (0.00 sec)

mysql> select user, authentication_string from mysql.user;
+------------------+------------------------------------------------------------------------+
| user             | authentication_string                                                  |
+------------------+------------------------------------------------------------------------+
| root             | *A780CA81542274F7A6F52BBC40B7B2E2F9BE8A0F                              |
| mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| mysql.session    | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| mysql.sys        | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
+------------------+------------------------------------------------------------------------+
6 rows in set (0.01 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql> \q
Bye

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Linux中的EXT系列文件系统格式详解

    Linux中的EXT系列文件系统格式详解

    这篇文章主要给大家介绍了关于Linux中EXT系列文件系统格式的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Linux系统具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-06-06
  • CentOS安装Maven实践

    CentOS安装Maven实践

    文章详细介绍了在CentOS系统上安装配置Maven的步骤:检查Java环境、下载解压Maven、设置环境变量与本地仓库、配置阿里云镜像加速,并提供常见问题解决方案及验证方法,确保Maven正确安装与使用
    2025-09-09
  • Linux利用traceroute命令发现负载均衡的实战案例

    Linux利用traceroute命令发现负载均衡的实战案例

    在网络管理和故障排除中,了解数据包的路径和识别负载均衡节点是非常重要的,traceroute 命令是一个用于跟踪数据包在网络中经过的路由路径的工具,本文将详细介绍如何利用 traceroute 命令发现网络中的负载均,需要的朋友可以参考下
    2024-07-07
  • 重启Linux服务器后数据消失问题的解决方法(重新挂载)

    重启Linux服务器后数据消失问题的解决方法(重新挂载)

    在使用 reboot 命令重启服务器后,服务器内挂载的文件全部丢失,那应该如何重新挂载呢?所以本文小编给大家介绍了重启Linux服务器后数据消失问题的解决方法,并通过图文讲解的非常详细,需要的朋友可以参考下
    2024-09-09
  • 在Linux命令行中使用计算器的5个命令详解

    在Linux命令行中使用计算器的5个命令详解

    这篇文章主要介绍了在Linux命令行中使用计算器的5个命令,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-08-08
  • 在IDEA中使用Linux命令的操作方法

    在IDEA中使用Linux命令的操作方法

    这篇文章主要介绍了在IDEA中使用Linux命令的操作方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-08-08
  • 详解如何实现Linux服务Crash后自动重启

    详解如何实现Linux服务Crash后自动重启

    近期碰到了一个 Linux Systemd 服务 Crash, Crash 后需要人工介入重启. 那么, 有没有办法如何实现 Linux 服务 Crash 后自动重启,下面就来和大家分享一下
    2023-08-08
  • CentOS7 LNMP+phpmyadmin环境搭建 第二篇LNMP环境搭建教程

    CentOS7 LNMP+phpmyadmin环境搭建 第二篇LNMP环境搭建教程

    这篇文章主要为大家详细介绍了CentOS7 LNMP+phpmyadmin环境搭建,第二篇LNMP环境搭建教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-07-07
  • Ubuntu添加永久路由的几种常见方法

    Ubuntu添加永久路由的几种常见方法

    在 Ubuntu 系统中,添加永久路由通常涉及修改网络接口配置文件或使用 netplan 配置工具,本文给大家介绍了Ubuntu添加永久路由的几种常见方法,需要的朋友可以参考下
    2025-06-06
  • centos7.6 安装Tomcat-8.5.39的方法

    centos7.6 安装Tomcat-8.5.39的方法

    这篇文章主要介绍了centos7.6 安装Tomcat-8.5.39的方法,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-09-09

最新评论