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
。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!