今儿碰到一个案例,MySQL的root密码丢失,要恢复,说下环境先:

Red Hat Enterprise Linux 6.3 x86_64

MySQL  5.5.28

按照自己以往经验是修改my.cnf,在[mysqld]添加skip-grant-tables,然后重启MySQL,就可以试用mysql免密码登陆,然后就可以修改密码了,但是这招好像是不怎么灵了,有另一套可行的简单的办法!

1.首先正常停止MySQL

 
  1. service mysql stop 

2.新建文件test.init

 
  1. UPDATE mysql.user SET Password=PASSWORD('') WHERE User='root';  
  2. FLUSH PRIVILEGES; 

3.启动

 
  1. mysqld_safe --init-file=test.init & 

这样就可以使用mysql免密码登陆MySQL了。实际上,在test.init中就已经重新设置了密码,只是将密码设置为空了,在第2部PASSWORD括号里可以填上你的密码。

4.正常启动

执行了第3步后,如果再执行service mysql restart,会发现MySQL报错起不来,但是3306仍是监听状态,因为第3步中已经用mysql_safe进行了特殊了启动,我们要kill掉这个进程:

 
  1. ps aux | grep mysql  
  2. kill -9 PID 

找到MySQL的进程,Kill掉,然后执行service命令正常启动即可。