热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

讲解几种破解MySQL数据库root密码的方法_MySQL

讲解几种破解MySQL数据库root密码的方法
bitsCN.com

几种破解mysql root密码的几种方法:


方法一


使用phpmyadmin,这是最简单的了,修改mysql库的user表,不过别忘了使用PASSWORD函数。


方法二


使用mysqladmin,这是前面声明的一个特例。


mysqladmin -u root -p password mypasswd


输入这个命令后,需要输入root的原密码,然后root的密码将改为mypasswd。


把命令里的root改为你的用户名,你就可以改你自己的密码了。


当然如果你的mysqladmin连接不上mysql server,或者你没有办法执行mysqladmin,那么这种方法就是无效的,而且mysqladmin无法把密码清空。


下面的方法都在mysql提示符下使用,且必须有mysql的root权限:


方法三


mysql> Insert INTO mysql.user (Host,User,Password)


VALUES(’%’,’jeffrey’,PASSWORD(’biscuit’));


mysql> FLUSH PRIVILEGES


确切地说这是在增加一个用户,用户名为jeffrey,密码为biscuit。


在《mysql中文参考手册》里有这个例子:


注意要使用PASSWORD函数,然后还要使用FLUSH PRIVILEGES。


方法四


和方法三一样,只是使用了REPLACE语句


mysql> REPLACE INTO mysql.user (Host,User,Password)


VALUES(’%’,’jeffrey’,PASSWORD(’biscuit’));


mysql> FLUSH PRIVILEGES


方法五


使用SET PASSWORD语句,


mysql> SET PASSWORD FOR " = PASSWORD(’biscuit’);


拟也必须使用PASSWORD()函数,但是不需要使用FLUSH PRIVILEGES。


方法六


使用GRANT ... IDENTIFIED BY语句


mysql> GRANT USAGE ON *.* TO " IDENTIFIED BY ’biscuit’;


这里PASSWORD()函数是不必要的,也不需要使用FLUSH PRIVILEGES。


注意: PASSWORD() [不是]以在Unix口令加密的同样方法施行口令加密。


MySQL 忘记口令的解决办法


如果 MySQL 正在运行,首先杀之: killall -TERM mysqld。


启动 MySQL :bin/safe_mysqld --skip-grant-tables &


就可以不需要密码就进入 MySQL 了。


然后就是


>use mysql


>update user set password=password("new_pass") where user="root";


>flush privileges;


重新杀 MySQL ,用正常方法启动 MySQL 。


mysql密码清空


Windows:


1.用系统管理员登陆系统。


2.停止MySQL的服务。


3.进入命令窗口,然后进入MySQL的安装目录,比如我的安装目录是c:mysql,进入C:mysqlin


4.跳过权限检查启动MySQL,


c:mysqlin>mysqld-nt --skip-grant-tables


5.重新打开一个窗口,进入c:mysqlin目录,设置root的新密码


c:mysqlin>mysqladmin -u root flush-privileges password "newpassword"


c:mysqlin>mysqladmin -u root -p shutdown


将newpassword替换为你要用的root的密码,第二个命令会提示你输入新密码,重复第一个命令输入的密码。


6.停止MySQL Server,用正常模式启动Mysql


7.你可以用新的密码链接到Mysql了。


Unix&Linux:


1.用root或者运行mysqld的用户登录系统;


2.利用kill命令结束掉mysqld的进程;


3.使用--skip-grant-tables参数启动MySQL Server


shell>mysqld_safe --skip-grant-tables &


4.为设置新密码


shell>mysqladmin -u root flush-privileges password "newpassword"


5.重启MySQL Server


mysql修改密码


mysql修改,可在mysql命令行执行如下:


mysql -u root mysql


mysql> Update user SET password=PASSWORD("new password") Where user=’name’;


mysql> FLUSH PRIVILEGES;


mysql> QUIT


教你如何将MySQL数据库的密码恢复


因为MySQL密码存储于数据库mysql中的user表中,所以只需要将我windows 2003下的MySQL中的user表拷贝过来覆盖掉就行了。


在c:mysqldatamysql(linux 则一般在/var/lib/mysql/mysql/)目录下有三个user表相关文件user.frm、user.MYD、user.MYI


user.frm //user表样式文件


user.MYD //user表数据文件


user.MYI //user表索引文件


为保险起见,三个都拷贝过来,不过其实如果之前在要恢复的那个MySQL上没有更改过表结构的话,只要拷贝user.MYD就行了


然后


#. /etc/rc.d/init.d/mysql stop


#. /etc/rc.d/init.d/mysql start


#mysql -u root -p XXXXXX


好了,可以用windows 2003下mysql密码登陆了


mysql>use mysql


mysql>update user set Password=PASSWORD(’xxxxxx’) where User=’root’;


这时候会出错,提示user表只有读权限


我分析了一下原因,只这样的,因为user.*文件的权限分配是windows 2003下的,在windows 2003下我ls -l一看权限是666


在linux下我一看,拷过来后权限变成了600(其实正常情况下600就行了,只不过这里的文件属主不是mysql,拷过来后的属主变为了root,所以会出现权限不够,这时候如果你改成权限666则可以了,当然这样不好,没有解决问题的实质),在/var/lib/mysql/mysql/下ls -l看了一下再


#chown -R mysql:mysql user.*


#chmod 600 user.*


//OK,DONE


重起一下MYSQL


重新连接


mysql>use mysql


mysql>update user set Password=PASSWORD(’xxxxxx’) where User=’root’;


mysql>FLUSH PRIVILEGES;


有一点值得注意:如果你windows 下mysql如果是默认配置的话,注意要还要执行


mysql>delete from user where User=’’;


mysql>delete from user where Host=’%’;


mysql>FLUSH PRIVILEGES;


好了,到这里恢复密码过程就完成了


这个方法么就是有点局限性,你必须也具备另外的user表文件


其他还有几种方法


其它方法一(这个是网上流传较广的方法,mysql中文参考手册上的)


1. 向mysqld server 发送kill命令关掉mysqld server(不是 kill -9),存放进程ID的文件通常在MYSQL的数据库所在的目录中。


killall -TERM mysqld


你必须是UNIX的root用户或者是你所运行的SERVER上的同等用户,才能执行这个操作。


2. 使用`--skip-grant-tables’ 参数来启动 mysqld。 LINUX下:


/usr/bin/safe_mysqld --skip-grant-tables , windows下c:mysqlinmysqld --skip-grant-tables


3. 然后无密码登录到mysqld server ,


>use mysql


>update user set password=password("new_pass") where user="root";


>flush privileges;


你也可以这样做:


mysqladmin -h hostname -u user password ’new password’’


4. 载入权限表:

mysqladmin -h hostname flush-privileges’


或者使用 SQL 命令


FLUSH PRIVILEGES’


5.killall -TERM mysqld


6.用新密码登陆


其它方法二


直接用十六进制编辑器编辑user.MYD文件


不过这个里面我要说明一点,我这里编辑的时候发现个问题,加密的密码串有些是连续存储的,有些的最后两位被切开了,后两位存储在后面其他地方.这一点我还没想明白.还有注意一点就是编辑的是加密过的密码串,也就是说你还是需要另外有user表文件。这种方法和我最上面介绍的方法的区别在于,这种方法直接编辑linux下的user表文件,就不需要重新改文件属主和权限了


修正一下:我在Windows下的实际操作如下


1.关闭正在运行的MySQL。


2.打开DOS窗口,转到mysqlin目录。


3.输入


mysqld-nt --skip-grant-tables


回车。如果没有出现提示信息,那就对了。


4.再开一个DOS窗口(因为刚才那个DOS窗口已经不能动了),转到mysqlin目录。


5.输入mysql回车,如果成功,将出现MySQL提示符 >


6. 连接权限数据库


>use mysql;


(>是本来就有的提示符,别忘了最后的分号)


6.改密码:


> update user set password=password("123456") where user="root"; (别忘了最后的分号)


7.刷新权限(必须的步骤)


>flush privileges;


8.退出


> q


9.注销系统,再进入,开MySQL,使用用户名root和刚才设置的新密码123456登陆。


据说可以用直接修改user表文件的方法:


关闭MySQL,Windows下打开Mysqldatamysql,有三个文件user.frm,user.MYD,user.MYI找个 bitsCN.com

推荐阅读
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 本文介绍了在SpringBoot中集成thymeleaf前端模版的配置步骤,包括在application.properties配置文件中添加thymeleaf的配置信息,引入thymeleaf的jar包,以及创建PageController并添加index方法。 ... [详细]
  • 本文由编程笔记小编整理,介绍了PHP中的MySQL函数库及其常用函数,包括mysql_connect、mysql_error、mysql_select_db、mysql_query、mysql_affected_row、mysql_close等。希望对读者有一定的参考价值。 ... [详细]
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • 本文介绍了关于apache、phpmyadmin、mysql、php、emacs、path等知识点,以及如何搭建php环境。文章提供了详细的安装步骤和所需软件列表,希望能帮助读者解决与LAMP相关的技术问题。 ... [详细]
  • 高质量SQL书写的30条建议
    本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
  • 本文讨论了在数据库打开和关闭状态下,重新命名或移动数据文件和日志文件的情况。针对性能和维护原因,需要将数据库文件移动到不同的磁盘上或重新分配到新的磁盘上的情况,以及在操作系统级别移动或重命名数据文件但未在数据库层进行重命名导致报错的情况。通过三个方面进行讨论。 ... [详细]
  • PDF内容编辑的两种小方法,你知道怎么操作吗?
    本文介绍了两种PDF内容编辑的方法:迅捷PDF编辑器和Adobe Acrobat DC。使用迅捷PDF编辑器,用户可以通过选择需要更改的文字内容并设置字体形式、大小和颜色来编辑PDF文件。而使用Adobe Acrobat DC,则可以通过在软件中点击编辑来编辑PDF文件。PDF文件的编辑可以帮助办公人员进行文件内容的修改和定制。 ... [详细]
  • 众筹商城与传统商城的区别及php众筹网站的程序源码
    本文介绍了众筹商城与传统商城的区别,包括所售产品和玩法不同以及运营方式不同。同时还提到了php众筹网站的程序源码和方维众筹的安装和环境问题。 ... [详细]
  • 如何在php中将mysql查询结果赋值给变量
    本文介绍了在php中将mysql查询结果赋值给变量的方法,包括从mysql表中查询count(学号)并赋值给一个变量,以及如何将sql中查询单条结果赋值给php页面的一个变量。同时还讨论了php调用mysql查询结果到变量的方法,并提供了示例代码。 ... [详细]
author-avatar
许晓慧
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有