此文章主要向大家描述的是找回MySQL root密码的解决方案,我们大家都知道MySQL root密码的丢失或是遗忘,是一件很令人头痛的事情,以下的文章就是对其的解决。

以下的文章主要讲述的是在LINUX操作系统下装MySQL数据库之后,不小心把MySQL ROOT的密码弄丢或是在修改初始密码时,忘记了新的密码的实际解决方案,下面就是具体方案的描述,希望在你今后的学习中会有所帮助。

找回MySQL root密码的解决方案(找回mysql服务器root密码)  MySQL root 第1张

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

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

user.frm //user表样式文件

user.MYD //user表数据文件

user.MYI //user表索引文件

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

然后

  1. #./etc/rc.d/init.d/MySQLstop
  2. #./etc/rc.d/init.d/MySQLstart
  3. #MySQL-uroot-pXXXXXX

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

  1. MySQL>useMySQL
  2. MySQL>updateusersetPassword=PASSWORD('xxxxxx')whereUser='root';

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

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

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

  1. #chown-RMySQL:MySQLuser.*
  2. #chmod600user.*
  3. //OK,DONE

重起一下MySQL

重新连接

  1. MySQL>useMySQL
  2. MySQL>updateusersetPassword=PASSWORD('xxxxxx')whereUser='root';
  3. MySQL>FLUSHPRIVILEGES;

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

  1. MySQL>deletefromuserwhereUser='';
  2. MySQL>deletefromuserwhereHost='%';
  3. MySQL>FLUSHPRIVILEGES;

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

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

其他还有几种方法

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

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

killall -TERM MySQLd

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

2. 使用`--skip-grant-tables' 参数来启动 MySQLd。 (LINUX下/usr/bin/safe_MySQLd --skip-grant-tables , windows下c:\MySQL\bin\MySQLd --skip-grant-tables)

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

  1. >useMySQL
  2. >updateusersetpasswordpassword=password("new_pass")whereuser="root";
  3. >flushprivileges;

你也可以这样做:

  1. `MySQLadmin-hhostname-uuserpassword'newpassword''。

4. 载入权限表: `MySQLadmin -h hostname flush-privileges' ,或者使用 SQL 命令`FLUSH PRIVILEGES'。

5.killall -TERM MySQLd

6.用新密码登陆

其它方法二

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

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

【编辑推荐】

  1. MySQL语句优化的原则简述
  2. MySQL索引和查询优化的实际操作
  3. MySQL数据库内存调优实操
  4. MYSQL DELETE语法的实际操作与代码
  5. MySQL存储过程中的基本函数描述
转载请说明出处
知优网 » 找回MySQL root密码的解决方案(找回mysql服务器root密码)

发表评论

您需要后才能发表评论