MySQL忘记密码重置方法:Linux环境下跳过权限认证流程

小林子
小林子
发布时间:2026-10-16 | 3人浏览过
原创

在使用MySQL的过程中,由于长时间未维护或交接疏漏导致root密码遗忘是常见问题。对于Linux环境(如CentOS),可以通过配置skip-grant-tables参数跳过权限验证表,从而免密登录数据库。本文将演示如何通过此方式安全地修改密码、刷新权限并恢复正常的安全验证机制。

重置原理与准备条件

MySQL默认使用mysql.user表存储用户信息并进行权限校验。当忘记密码时,无法通过正常路径修改。解决方法是启动MySQL服务时加载skip-grant-tables参数,使服务端忽略权限检查,允许任何人无密码登录。[mysqld]段添加该参数后,需重启服务生效,随后直接以-uroot连接数据库进行修改操作。

第1步:停止当前MySQL服务

为防止正在进行的查询冲突及确保配置生效,首先需要关闭正在运行的MySQL实例。

systemctl stop mysql

等待命令返回提示符,确认服务已停止。

第2步:修改MySQL配置文件开启免密

找到MySQL主配置文件/etc/my.cnf(不同发行版可能位于/etc/mysql/my.cnf等位置)。在文件中找到[mysqld]区块,并在其下方单独添加一行:skip-grant-tables。

保存文件后退出编辑器(例如在vim中按Esc输入:wq)。

第3步:重启MySQL服务应用配置

systemctl start mysql

此时服务已在免密模式下启动。

重置密码核心步骤

第4步:直接连接MySQL服务

由于跳过了权限表,可直接输入用户名连接,无需输入密码。

mysql -uroot

若能成功进入mysql>提示符,说明配置正确。

第5步:更新root用户密码

在数据库内依次执行以下SQL指令:

use mysql;
update mysql.user set authentication_string=password('这里输入你的新密码') where user='root';
flush privileges;
exit;

注意以下几点以确保成功:

  • 选择数据库:use mysql;进入权限库。
  • 修改字段:新版本MySQL使用authentication_string字段记录密码哈希。
  • 强制刷新:flush privileges;是必不可少的一步,否则内存中的权限表不会更新,可能导致重连后旧密码依然生效。

恢复配置与验证

第6步:还原配置文件并重启服务

回到终端,再次编辑/etc/my.cnf,删除刚才添加的skip-grant-tables行,保存退出。然后重启MySQL服务。

vim /etc/my.cnf
# 删除 skip-grant-tables 行并保存
systemctl restart mysql

此时MySQL已恢复正常的安全验证机制。

第7步:测试新密码登录

尝试使用指定新密码的用户名登录,如果成功则代表修改完成。

mysql -uroot -p

输入第5步设置的密码后,若能进入客户端即表示成功。

注意事项

在配置skip-grant-tables期间,建议限制服务器公网访问,因为任何本地用户都能以root身份直接进入数据库而无需密码。完成操作恢复配置后,数据库的安全性自动回归初始状态。

以上就是Mysql忘记密码解决方法的详细内容,更多关于Mysql忘记密码解决方案资料请关注本站其它相关文章!

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表