Mysql忘记密码重置方法

这个解决方案适用于MySQL由于权限问题无法更改root密码的情况。当遇到“Access denied; you need the SUPER privilege for this operation”错误时,说明当前用户没有足够的权限来修改密码。通过暂时跳过权限表的检查(即添加skip-grant-tables),你可以无需密码直接登录MySQL,并对root用户密码进行重置。

以下是解决方案的具体步骤解释:

解决方案:

  1. 修改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
    
  2. 登录并更改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;
  1. 恢复MySQL正常登录设置:
    再次编辑MySQL配置文件,移除之前添加的skip-grant-tables

    # vi /etc/my.cnf
    

    删除skip-grant-tables这一行,保存并退出编辑器。

    重新启动MySQL服务,以恢复正常的权限检查:

    # /etc/init.d/mysqld restart
    

现在,MySQL已经恢复正常运行,并且root用户的密码已更改为new-password

原文链接 https://www.hanyuanhun.cn | https://node.hanyuanhun.cn

posted @   汉源魂  阅读(48)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示