**步骤一:停止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 密码的找回和重置流程。通过这种方法您可以随时应对类似的突发状况,保障系统的稳定运营以及数据库的安全访问。