MySQL忘记root用户密码的解决办法

    技术2025-06-13  24

    0. 切换root 登录CentOS7。

    因为该操作对安全要求较高,需要切换到root用户下操作。

    su root 输入密码回车,输入密码的时候没有提示,输入成功即可切换到root用户。结果:

    [root@localhost ~]# 能看到最左边的root说明已经切换用户成功。

    1. 修改配置跳过验 打开MySQL配置文件my.cnf,

    vi /etc/my.cnf 按字符i,进入编辑模式,在[mysqld] 下面加上, skip-name-resolve skip-grant-tables

    修改后(参考)效果如下:

    [mysqld] character-set-server=utf8 collation-server=utf8_general_ci skip-name-resolve skip-grant-tables 按Esc进入命令行模式,英文状态下输入下述指令完成保存退出。

    :wq 2. 重启MySQL 重启MySQL,使配置保存生效。

    service mysqld restart 3. 免密登录修改密码 3.1 免密登录 等MySQL服务重新启动后,就可以不使用密码登录MySQL。

    mysql -u root -p 也可以输入mysql -u root或mysql,效果与上述命令一下,因为不需要输入密码。 回车后提示输入密码,

    [root@localhost xxxx]# mysql -u root -p Enter password: 不用理会直接回车即可直接成功登录MySQL。

    Server version: 5.7.27 MySQL Community Server (GPL)

    Copyright © 2000, 2019, Oracle and/or its affiliates. All rights reserved.

    Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners.

    Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.

    mysql> 注意:这个时候MySQL已关闭各项权限的验证,可以免密登录等各种操作,不安全。建议尽快按照如下步骤修改密码后取消免密登录。

    3.2 修改密码 使用如下命令之一修改密码:

    update user set authentication_string=password(‘新密码’) where user=‘root’ and Host = ‘localhost’; 结果:

    mysql> update mysql.user set authentication_string=password(‘itheima777’) where user=‘root’ and Host = ‘localhost’; Query OK, 1 row affected, 1 warning (0.01 sec) 注意:

    因为MySQL5.7的密码字段是authentication_string,所以上述语句这样写。 如果是MySQL5.5的版本,修改密码的语句如下(未验证) update user set password=password(“新密码”) where user=“root”;

    在MySQL自带的客户端上输入命令必须以;结尾,否则无法执行,忘记了直接再敲一个;回车即可。 3.3 刷新权限 修改密码之后,需要刷新权限。

    flush privileges; 结果:

    mysql> flush privileges; Query OK, 0 rows affected (0.00 sec) 注意:在MySQL自带的客户端上输入命令必须以;结尾,否则无法执行,忘记了直接再敲一个;回车即可。 如果修改失败报错,可以先刷新权限.

    4. 重启MySQL 验证密码 4.1 重启 Ctrl + D或者exit + 回车退出MySQL。

    4.2 还原配置文件 按照步骤1中方式,修改MySQL配置文件,还原配置内容。

    这里建议将skip-grant-tables这行注释掉,而非删除,原因大家都懂得[坏笑…]。效果如下:

    [mysqld] character-set-server=utf8 collation-server=utf8_general_ci #skip-grant-tables 4.3 重启MySQL使配置生效 重启MySQL,使配置保存生效。

    systemctl restart mysqld 4.4 使用新密码登录 等MySQL服务重新启动后,使用新密码登录MySQL。

    mysql -u root -p 回车后输入密码,看到了熟悉的界面,恭喜!!!

    Processed: 0.010, SQL: 9