游乐游手机版
首页/网络安全/文章详情

MySQL密码破解方法大全

时间:2026-07-24 06:28
MySQL密码管理多种方法包括:使用phpMyAdmin常用图形化界面、利用mysqladmin命令行工具、执行INSERT或REPLACESQL语句、使用SETPASSWORD语句、以及利用GRANT语句进行授权修改密码;若忘记root密码,可通过跳过权限表启动、替换user表文件或直接编辑user MYD文件三种方式恢复。

MySQL 密码管理全攻略:修改、找回与恢复的六种实用方法

在日常运维中,MySQL 密码管理是一项基础且核心的技能。无论是新装系统后需要设置密码,还是不小心遗忘了 root 密码,又或者需要批量调整用户权限,掌握几种可靠且高效的密码操作方式都至关重要。下面从最直观的图形化操作开始,逐步深入到命令行与底层文件修复,将这些方法系统性地梳理清楚。

一、通过 phpMyAdmin 修改密码(最直观)

如果你拥有 phpMyAdmin 的访问权限,操作将变得非常简单。直接进入 mysql 库的 user 表,找到目标用户,在 password 字段中使用 MySQL 的 PASSWORD() 函数填入新密码即可。请注意,此处必须使用 PASSWORD() 函数,直接写入明文密码是无效的。

二、使用 mysqladmin 命令行工具

这是官方提供的专用命令行工具,专门用于修改密码。语法如下:

mysqladmin -u root -p password mypasswd

输入后系统会提示你输入旧密码,验证通过后 root 的密码即被更新为 mypasswd。此命令同样适用于非 root 用户,只需将 -u 后面的用户名替换即可。但有两个限制:一是 mysqladmin 必须能够连接到 MySQL 服务,二是它无法直接将密码清空(设为空值)。

下面几种方法都需要在 MySQL 命令行提示符下操作,且必须拥有 root 权限。

方法三:用 INSERT 语句新增用户

mysql> INSERT INTO mysql.user (Host,User,Password)
    VALUES('%','jeffrey',PASSWORD('biscuit'));
mysql> FLUSH PRIVILEGES;

这实际上是在创建一个新用户,用户名为 jeffrey,密码为 biscuit。许多官方文档中均以此为例。关键点有两个:必须使用 PASSWORD() 函数对密码进行加密,然后务必执行 FLUSH PRIVILEGES 使权限表生效。

方法四:用 REPLACE 语句(本质同上)

逻辑与方法三一致,仅将 INSERT 替换为 REPLACE:

mysql> REPLACE INTO mysql.user (Host,User,Password)
    VALUES('%','jeffrey',PASSWORD('biscuit'));
mysql> FLUSH PRIVILEGES;

方法五:使用 SET PASSWORD 语句

这是更为简洁的方式:

mysql> SET PASSWORD FOR jeffrey@"%" = PASSWORD('biscuit');

同样需要使用 PASSWORD() 函数,优点是不必再手动执行 FLUSH PRIVILEGES,系统会自动刷新权限。

方法六:用 GRANT ... IDENTIFIED BY 语句

mysql> GRANT USAGE ON *.* TO jeffrey@"%" IDENTIFIED BY 'biscuit';

在这种情况下,PASSWORD() 函数反而无需使用,MySQL 会自动处理加密。同样也不需要执行 FLUSH PRIVILEGES

补充说明:MySQL 的 PASSWORD() 函数并非采用 Unix 密码加密算法,两者不同,请勿混用。


忘记 MySQL root 密码怎么办?

如果已经忘记了 root 密码,前述方法均无法使用,此时只能通过“旁门左道”来解决——跳过权限验证启动 MySQL,然后直接修改 user 表。

通用 Linux/Unix 方法

第一步,如果 MySQL 正在运行,先终止进程:

killall -TERM mysqld

第二步,以跳过权限表的方式启动 MySQL:

bin/safe_mysqld --skip-grant-tables &

第三步,现在你可以直接无密码登录 MySQL:

mysql -u root

第四步,进入 mysql 数据库,更新密码:

> use mysql;
> update user set password=password("new_pass") where user="root";
> flush privileges;

第五步,终止 MySQL 进程,然后以正常方式启动。此时即可用新密码登录。

Windows 下的操作步骤

1. 使用系统管理员身份登录。
2. 停止 MySQL 服务。
3. 打开命令提示符,进入 MySQL 安装目录下的 bin 目录,例如 C:\mysql\bin
4. 跳过权限检查启动 MySQL:

mysqld-nt --skip-grant-tables

注意此窗口会保持运行状态,请勿关闭。

5. 再打开一个新的命令窗口,同样进入 bin 目录,执行:

mysqladmin -u root flush-privileges password "newpassword"
mysqladmin -u root -p shutdown

第二个命令会提示你输入新密码,重复刚才输入的 newpassword 即可。
6. 停止 MySQL Server,然后以正常模式启动。
7. 现在用新密码即可连接。

Linux 下的另一种常见方式

步骤基本一致:

shell> mysqld_safe --skip-grant-tables &
shell> mysqladmin -u root flush-privileges password "newpassword"

之后重启 MySQL 服务即可。


通过替换 user 表文件恢复密码

原理很简单:MySQL 的密码存储在 mysql 库的 user 表中,对应三个文件:user.frm(表结构)、user.MYD(数据)、user.MYI(索引)。如果手头有另一台相同版本的 MySQL 且知道密码,直接将它的 user.MYD 文件拷贝过来覆盖,重启后即可用该密码登录。

具体操作(以 Linux 为例)

确认目标 MySQL 的 data 目录位置,通常为 /var/lib/mysql/mysql/。将源机器上的 user.* 文件拷贝过去后,注意文件属主可能变为 root,需要改回:

# chown -R mysql:mysql user.*
# chmod 600 user.*

然后重启 MySQL,用已知密码登录,再执行 update user set password=PASSWORD('新密码') where User='root'; 修改为想要的新密码即可。

注意事项:如果从 Windows 拷贝 user 文件到 Linux,Windows 下这些文件的权限可能是 666,而 Linux 下正常为 600。拷贝后属主会变成 root,导致 MySQL 无法写入。因此必须使用 chown 和 chmod 进行修正。

此外,Windows 下如果默认配置存在匿名用户,建议清理:

mysql> delete from user where User='';
mysql> delete from user where Host='%';
mysql> FLUSH PRIVILEGES;

更直接的底层方法:直接编辑 user.MYD 文件

如果你手头没有另一份 user 表文件,也可以使用十六进制编辑器直接修改 user.MYD。关闭 MySQL,用 UltraEdit 或类似工具打开 user.MYD 文件。
找到 root 用户对应的密码字段(通常是用户名字符串后面第 8 个字节开始的区域)。若希望将密码设置为 123456,对应的加密串为 565491d704013245,直接替换掉原来的 8 个字节即可。如果想清空密码,则将这 8 个字节全部改为 00 02 02 02 02 02 02 02,在编辑器右侧看到的是星号或小点。

修改后重启 MySQL,使用对应密码(或空密码)登录,之后再通过正常方式改回所需密码。


以上就是 MySQL 密码管理的几种主流方案,从图形界面到命令行,从正常修改到应急恢复,基本覆盖了日常各种场景。具体选择哪种方法,取决于你的系统环境、权限范围以及手头是否有可用的备份文件。希望本文对你有所帮助。

来源:https://www.jb51.net/hack/5107.html
上一篇位MD5加密破解方法与技巧详解 下一篇UPX程序破解详细步骤教程
本站内容用于信息整理与展示,如有侵权或内容问题请及时联系处理。

相关推荐

补充同频道和同主题内容,方便继续浏览更多相关内容。

同类最新

继续查看同栏目最近更新的文章。

更多
零基础Python网络安全学习指南,包住宿实战培训
网络安全 · 2026-07-25

零基础Python网络安全学习指南,包住宿实战培训

先抛出几个核心判断:网络安全人才缺口确实已经超过70万。这个数字不算夸张,各大招聘网站上安全岗位的薪资涨幅和需求增长都是实实在在的。但实话实说,行业真正缺的是能上手干活的人,不是只懂几个理论概念的新手。因此,一套扎实且成体系的训练方案,对于零基础转行或进阶提升就显得格外关键。 从零基础到能够独立应对

网络安全定义与核心概念详解
网络安全 · 2026-07-25

网络安全定义与核心概念详解

谈到网络安全,不同组织与标准体系对其定义虽有差异,但核心目标高度统一:保护信息与系统不受威胁侵害。以下梳理几种主流定义—— 什么是网络安全? 国际标准化组织(ISO)在ISO-74982文献中将安全定义为:最大程度地降低数据和资源遭受攻击的可能性。该定义虽简短,却精准点出安全的本质——即风险控制。

IIS 7.0网站漏洞利用与修复方法指南
网络安全 · 2026-07-25

IIS 7.0网站漏洞利用与修复方法指南

先来聊聊当前网络安全领域比较流行的一种实战技巧——以PHP环境为例,详细讲解图片马合并与解析漏洞利用的具体操作步骤。整个过程并不复杂,但细节往往决定成败,大家跟着流程逐步操作即可。 合并一张PHP一句话图片马 首先,我们需要将一句话木马脚本与一张正常图片合并,生成一个看似无害的图片文件。合并方式主要

织梦管理系统后台查找功能教程
网络安全 · 2026-07-25

织梦管理系统后台查找功能教程

通过SQL注入漏洞获取织梦CMS(DedeCMS)管理员密码后,满怀期待地准备进入后台,却发现怎么也找不到登录入口——这种情况其实相当常见。别着急,这里有一个实用的技巧值得尝试。 直接在网站地址后面添加以下路径: include dialog select_media php?f=form1 mur

微软IE浏览器BrowseDialog类(ccrpbds6.dll)拒绝服务安全漏洞深度分析
网络安全 · 2026-07-25

微软IE浏览器BrowseDialog类(ccrpbds6.dll)拒绝服务安全漏洞深度分析

BrowseDialog Class (ccrpbds6 dll) 导致 Internet Explorer 拒绝服务漏洞分析 该漏洞的PoC(概念验证代码)实现极为直接——触发浏览器崩溃的条件简单得令人意外。测试环境采用Windows XP Professional SP2(已安装全部补丁)并运行