CentOS下重置MySQL遗忘密码的方法与步骤详解

更新时间:2024-05-09 18:14:22   人气:2163
在 CentOS 系统环境下,如果不幸遗忘了 MySQL 数据库的 root 密码或者需要重新设置密码,不必惊慌。这里我们将详细介绍一种安全且实用的方式来解决这个问题。

**步骤一:停止MySQL服务**

首先确保您具有足够的权限来操作系统服务,在终端中执行以下命令以关闭正在运行的 MySQL 服务器:

bash

sudo systemctl stop mysqld.service

这条指令会终止当前所有与 MySQL 相关的服务进程。

**步骤二:跳过授权表启动MySQL服务**

为了能够更改root用户的密码而不受原密码限制,我们需要临时修改MySQL配置文件(通常是 `/etc/my.cnf`),添加一行 `skip-grant-tables` 来忽略权限验证过程。打开该文件并插入如下内容到 `[mysqld]` 区块下方或末尾:

ini

[mysqld]
...
skip-grant-tables


保存后重启mysql服务,并使其加载新的配置项:

bash

sudo systemctl start mysqld.service


**步骤三:登录数据库无密模式进行密码更新**

由于我们刚刚设置了 "skip-grant-tables" ,现在可以无需密码直接进入 mysql 命令行客户端:

bash

mysql -u root


接着切换至 'mysql' 存储用户和权限数据的系统数据库:

sql

USE mysql;


然后使用 UPDATE 语句重设root账户密码。假设新设定的密码为 "<PASSWORD>" (请自行替换为您想要的新密码):

sql

UPDATE user SET Password=PASSWORD('<new_password>') WHERE User='root';
FLUSH PRIVILEGES;


这里的 PASSWORD() 函数用于加密指定明文字符串作为 MySQL 的密码格式存储起来。而 FLUSH PRIVILEGES 则是刷新MySQL的特权缓存,使上述变更立即生效。

**步骤四:恢复MySQL正常启动方式及测试新密码**

完成以上操作之后,请务必移除之前加入 “/etc/my.cnf” 文件中的 ‘skip-grant-tables’ 配置选项,以免造成安全隐患。随后再次重启 MySQL 服务:

bash

vi /etc/my.cnf # 移除此处的 skip-grant-tables 行
sudo systemctl restart mysqld.service

# 测试新密码是否有效:
mysql -uroot -p<new_password>


至此,已在 CentOS 下成功完成了对忘记 MySQL 密码的找回和重置流程。通过这种方法您可以随时应对类似的突发状况,保障系统的稳定运营以及数据库的安全访问。