Mysql忘记密码重置方法
这个解决方案适用于MySQL由于权限问题无法更改root密码的情况。当遇到“Access denied; you need the SUPER privilege for this operation”错误时,说明当前用户没有足够的权限来修改密码。通过暂时跳过权限表的检查(即添加skip-grant-tables),你可以无需密码直接登录MySQL,并对root用户密码进行重置。
以下是解决方案的具体步骤解释:
解决方案:
-
修改MySQL登录设置:
打开MySQL的配置文件:# vi /etc/my.cnf在
[mysqld]部分插入一行以暂时跳过权限表检查的关键配置:[mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock skip-name-resolve # 加入以下强调部分 skip-grant-tables保存并退出VI编辑器。
之后,重新启动MySQL服务以应用新配置:
# /etc/init.d/mysqld restart -
登录并更改MySQL root密码:
直接登录MySQL,此时不需要密码:# /usr/bin/mysql mysql> USE mysql ;接下来,更新root用户的密码:
mysql> UPDATE user SET Password = PASSWORD('new-password') WHERE User = 'root';
8.0版本的mysql如下:
ALTER USER 'root' IDENTIFIED BY 'new-password';
#给root用户授权使用 mysql_native_password
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'new-password';
Mysql 8.0的加密规则变了,在Mysql 8.0以前,加密规则为mysql_native_password,Mysql8.0以后,加密规则为caching_sha2_password
mysql> FLUSH PRIVILEGES;
最后,退出MySQL客户端:
mysql> QUIT;
-
恢复MySQL正常登录设置:
再次编辑MySQL配置文件,移除之前添加的skip-grant-tables:# vi /etc/my.cnf删除
skip-grant-tables这一行,保存并退出编辑器。重新启动MySQL服务,以恢复正常的权限检查:
# /etc/init.d/mysqld restart
现在,MySQL已经恢复正常运行,并且root用户的密码已更改为new-password。

浙公网安备 33010602011771号