AlexRomeo
发布于 2024-06-05 / 63 阅读
2
0

MySQL密码重置

1 背景介绍

无论您是在企业中做开发的工程师还是在学习中的学生,难免会遇到MySQL的密码未与之前的开发人员交接清楚或自己遗忘了密码的情况。

1.1 系统及软件版本

系统/软件版本
CentOS7.8 64位
MySQL5.7.34

2 操作过程

Tips:

以下所有的操作均以管理员账户或拥有管理员权限的账户执行

先停止mysql服务

systemctl stop mysqld.service

修改mysql的配置文件my.cnf,达到跳过密码验证权限,通常此文件在/etc/my.cnf或/etc/mysql/my.cnf。

也可以通过命令查找mysql的配置文件路径

[root@hadoop01 ~]# find / -name my.cnf
/etc/my.cnf
/var/lib/docker/overlay2/d718ec72caaeb4f0cd59df2e9c8503d69bddb902fe95b52a1b336e6fbb6f9162/diff/etc/my.cnf
/usr/share/mysql-test/suite/federated/my.cnf
/usr/share/mysql-test/suite/group_replication/my.cnf
/usr/share/mysql-test/suite/ndb/my.cnf
/usr/share/mysql-test/suite/ndb_big/my.cnf
/usr/share/mysql-test/suite/ndb_binlog/my.cnf
/usr/share/mysql-test/suite/ndb_ddl/my.cnf
/usr/share/mysql-test/suite/ndb_memcache/my.cnf
/usr/share/mysql-test/suite/ndb_rpl/my.cnf
/usr/share/mysql-test/suite/ndb_team/my.cnf
/usr/share/mysql-test/suite/ndbcluster/my.cnf
/usr/share/mysql-test/suite/rpl/extension/bhs/my.cnf
/usr/share/mysql-test/suite/rpl/my.cnf
/usr/share/mysql-test/suite/rpl_ndb/my.cnf

您的查询结果会可能会因为环境导致存在与上述结果不同的问题,可以忽略这个事情。从上述结果中看,/etc/my.cnf就是mysql的配置文件。

通过vi或vim打开此配置文件,在[mysqld]部分下添加内容:

skip-grant-tables

保存并关闭配置文件后,启动mysql服务

# 启动mysql服务
systemctl start mysqld

登录MySQL

由于已经跳过了权限验证,现在可以直接登录MySQL,无需密码。使用以下命令登录:

mysql -u root

登录后可以看到信息如下图

image-20240605112644483

接下来选择数据库,执行命令修改mysql的密码。

-- 选择数据库
use mysql;

-- 修改密码,新密码为Root!234
UPDATE user SET authentication_string = PASSWORD('Root!234') WHERE User = 'root';

不同版本的MySQL的密码字段可能不同,可以通过desc mysql命令来查看字段结果。或通过select语句查看字段,如有返回值则表示mysql中使用的是与文档中相同字段,

SELECT User,authentication_string from user;

如果不是authentication_string字段,上面的sql执行后不会出现类似下图中的结果。

image-20240605113911605

执行以下命令以确保所有权限更改生效,并退出MySQL shell。

FLUSH PRIVILEGES;
EXIT;

打开my.cnf文件,将skip-grant-tables删除。然后重启mysql服务

systemctl restart mysqld

使用新的密码登录

mysql -u root -p'Root!234'

结果如下图

image-20240605114347653


评论