1. 停止mysql服务
/etc/init.d/mysqld stop
重新启动服务
/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
原文地址:http://woymk.blog.51cto.com/10000269/1916742