1. 停止mysql服务
/etc/init.d/mysqld stop

(本文永久地址:http://woymk.blog.51cto.com/10000269/1916742)

重新启动服务

/usr/local/mysql/bin/mysqld_safe --skip-grant-tables --skip-networking&

注:--skip-networking参数可以阻止远程客户端连接,增加安全性


或者
vi /etc/my.cnf
在[mysqld]中增中以下两行

[mysqld]
skip-grant-tables
skip-networking

保存后重新启动服务
/etc/init.d/mysqld start

这个修改完密码后一定要记得改回去


2. 修改密码

/usr/local/mysql/bin/mysql -uroot

mysql> FLUSH PRIVILEGES;


MySQL 5.7.6 及以后版本执行这个:

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';


MySQL 5.7.5 及之前的版本执行这个:

mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPass');


然后退出mysql

mysql> quit


注意,如果 ALTER USER 执行失败,试着执行下面的命令:

UPDATE mysql.user SET authentication_string = PASSWORD('MyNewPass')
WHERE User = 'root' AND Host = 'localhost';
FLUSH PRIVILEGES;


3. 重启服务

/etc/init.d/mysqld restart

/usr/local/mysql/bin/mysql -uroot -p

这时已经可以使用刚刚更改的新密码登陆。

以上操作方法参考自mysql官方手册:
https://dev.mysql.com/doc/refman/5.7/en/resetting-permissions.html