在开发或者运维等场景中,或者服务器安装好了很久未使用,总之种种原因MySQL密码忘记了。这个时候需要重置MySQL的密码,其实这个并不难,下面说一下实现思路和方案。

    重置密码要分两个步骤:

1、登陆到MySQL命令行界面

2、使用SQL指令修改密码

按照这两部操作就好了,可能我们有疑惑:密码都忘记了怎么登陆到命令行界面呢?其实这个在启动MySQL的时候跳过密码认证就可以了。首先要停止MySQL服务,这个和安装MySQL的方式有关,大致三种方式可以停止:

1、使用 service 启动:service mysqld stop
2、使用 mysqld 脚本启动:/etc/inint.d/mysqld stop
3、mysqladmin shutdown

然后启动,这个很关键了虽然MySQL可能可以通过service mysqld start或者/etc/init.d/mysql start启动但是不能这样做,应该在MySQL的安装目录下找到safe_mysqld然后使用

mysqld_safe –skip-grant-tables &

注意可能需要mysqld_safe的全路径,这样启动后就可以使用空密码登陆MySQL了。

第二步就是修改密码了,其实就是修改数据表,因为MySQL的用户和密码存储在数据表中。存储在数据库名为mysql的数据库中的user表中,至于密码字段这个和MySQL版本有关了如果是MySQL5.7之前的版本,密码存储在Password字段如果是MySQL5.7及之后的版本密码存储在authentication_string字段中,另外几个相关字段为:Host(主机)、User(用户名)两个字段,以MySQL5.7及之后的版本为例,使用root和空密码登录MySQL命令行界面后使用

update user set authentication_string=password('新密码') where User='root';   
flush privileges;

重启MySQL即可生效!