今儿碰到一个案例,MySQL的root密码丢失,要恢复,说下环境先:
Red Hat Enterprise Linux 6.3 x86_64
MySQL 5.5.28
按照自己以往经验是修改my.cnf,在[mysqld]添加skip-grant-tables,然后重启MySQL,就可以试用mysql免密码登陆,然后就可以修改密码了,但是这招好像是不怎么灵了,有另一套可行的简单的办法!
1.首先正常停止MySQL
- service mysql stop
2.新建文件test.init
- UPDATE mysql.user SET Password=PASSWORD('') WHERE User='root';
- FLUSH PRIVILEGES;
3.启动
- mysqld_safe --init-file=test.init &
这样就可以使用mysql免密码登陆MySQL了。实际上,在test.init中就已经重新设置了密码,只是将密码设置为空了,在第2部PASSWORD括号里可以填上你的密码。
4.正常启动
执行了第3步后,如果再执行service mysql restart,会发现MySQL报错起不来,但是3306仍是监听状态,因为第3步中已经用mysql_safe进行了特殊了启动,我们要kill掉这个进程:
- ps aux | grep mysql
- kill -9 PID
找到MySQL的进程,Kill掉,然后执行service命令正常启动即可。