一:(停掉正在运行的mysql)
 [root@NetDakVPS ~]# service mysql stop 
 二:使用 “--skip-grant-tables”参数重新启动mysql
 [root@NetDakVPS ~]# mysqld_safe --skip-grant-tables &
 
  
 [1] 23810
 Starting mysqld daemon with databases from /var/lib/mysql 
 三:用root帐号登录mysql
 [root@NetDakVPS ~]# mysql -u root
 Welcome to the MySQL monitor. Commands end with ; or \g.
 Your MySQL connection id is 1
 Server version: 5.0.77 Source distributionType ‘help;‘ or ‘\h‘ for help. Type ‘\c‘ to clear the buffer. 
 四:改变用户数据库
 mysql> use mysql
 Reading table information for completion of table and column names
 You can turn off this feature to get a quicker startup with -ADatabase changed 
 五:修改密码,记得密码要用password()函数进行加密
 mysql> update user set password=password(‘netdak‘) where user=‘root‘;
 Query OK, 1 row affected (0.04 sec)
 Rows matched: 1 Changed: 1 Warnings: 0 
 六:刷新权限表
 mysql> flush privileges;
 Query OK, 0 rows affected (0.00 sec) 
 七:退出mysql
 mysql> quit
 Bye 
 八:对mysql进行重启
 [root@NetDakVPS ~]# service mysql restart;
 STOPPING server from pid file /var/run/mysqld/mysqld.pid
 100421 13:44:03 mysqld endedStopping MySQL: [ OK ]
 Starting MySQL: [ OK ]
 [1]+ Done mysqld_safe --skip-grant-tables 
 九:用更改过的密码重新登录即可。
 [root@NetDakVPS ~]# mysql -u root -p
 Enter password: netdak
 Welcome to the MySQL monitor. Commands end with ; or \g.
 Your MySQL connection id is 2
 Server version: 5.0.77 Source distributionType ‘help;‘ or ‘\h‘ for help. Type ‘\c‘ to clear the buffer.mysql> quit
 Bye 
十、重新执行修改密码
 SET PASSWORD = PASSWORD(‘123456‘);
  
注:第十步不一定需要,但是 MySql5.6操作时可能会报错:You must SET PASSWORD before executing this statement.
Centos下忘记mysql的root密码的解决方法,布布扣,bubuko.com
原文:http://my.oschina.net/macleo/blog/304534