专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »安全 » mysql忘记root密码:破解mysql  root密码的几种思路方法 »正文

mysql忘记root密码:破解mysql  root密码的几种思路方法

来源: 发布时间:星期六, 2009年9月12日 浏览:45次 评论:0
文章来自:网络

网上流传几种破解mysql root密码几种思路方法:

思路方法 
使用phpmyadmin这是最简单修改mysql库user表不过别忘了使用PASSWORD 

思路方法 2 
使用mysqladmin这是前面声明个特例 
mysqladmin -u root -p password mypasswd 
输入这个命令后需要输入root原密码然后root密码将改为mypasswd 
把命令里root改为你用户名你就可以改你自己密码了 
当然如果你mysqladmin连接不上mysql server或者你没有办法执行mysqladmin那么这种思路方法就是无效而且mysqladmin无法把密码清空 

下面思路方法都在mysql提示符下使用且必须有mysqlroot权限: 
思路方法 3 
mysql> Insert INTO mysql.user (Host,User,Password) 
VALUES('%','jeffrey',PASSWORD('biscuit')); 
mysql> FLUSH PRIVILEGES 
确切地说这是在增加个用户用户名为jeffrey密码为biscuit 
mysql中文参考手册里有这个例子所以我也就写出来了 
注意要使用PASSWORD然后还要使用FLUSH PRIVILEGES 

思路方法 4 
和思路方法 3只是使用了REPLACE语句 
mysql> REPLACE INTO mysql.user (Host,User,Password) 
VALUES('%','jeffrey',PASSWORD('biscuit')); 
mysql> FLUSH PRIVILEGES 

思路方法 5 
使用SET PASSWORD语句 
mysql> SET PASSWORD FOR jeffrey@"%" = PASSWORD('biscuit'); 
拟也必须使用PASSWORD但是不需要使用FLUSH PRIVILEGES 


思路方法 6 
使用GRANT ... IDENTIFIED BY语句 
mysql> GRANT USAGE ON *.* TO jeffrey@"%" 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  password=password("_pass") where user="root";
>flush privileges;
重新杀 MySQL 用正常思路方法启动 MySQL 


mysql密码清空
Windows: 
1.用系统管理员登陆系统 
2.停止MySQL服务 
3.进入命令窗口然后进入MySQL安装目录比如我安装目录是c:\mysql,进入C:\mysql\bin 
4.跳过权限检查启动MySQL 
c:\mysql\bin>mysqld-nt --skip-grant-tables 
5.重新打开个窗口进入c:\mysql\bin目录设置root新密码 
c:\mysql\bin>mysqladmin -u root flush-privileges password "password" 
c:\mysql\bin>mysqladmin -u root -p shutdown 
password替换为你要用root密码第 2个命令会提示你输入新密码重复第个命令输入密码 
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.为root@localhost设置新密码 
shell>mysqladmin -u root flush-privileges password "password"
5.重启MySQL Server


mysql修改密码
  mysql修改可在mysql命令行执行如下:
  mysql -u root mysql 
  mysql> Update user SET password=PASSWORD(" password") Where user='name'; 
  mysql> FLUSH PRIVILEGES; 
  mysql> QUIT 


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

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

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

user.frm //user表样式文件 

user.MYD //user表数据文件 

user.MYI //user表索引文件 

为保险起见 3个都拷贝过来不过其实如果的前在要恢复那个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  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  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;


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





  • 篇文章: 再度破解SAM

  • 篇文章: 日志配置和入侵取证
  • 0

    相关文章

    读者评论

    发表评论

    • 昵称:
    • 内容: