MySQL中忘记用户密码怎么办?

当忘记MySQL密码时,可以通过两种方法进行破解和重置:一是作为超级用户通过修改配置文件跳过权限验证,然后更新root用户的密码;二是使用其他管理员账号在SQLyog等工具中修改。步骤包括停服、修改配置、启动服务、刷新权限、修改密码、恢复配置和验证。确保在完成密码重置后恢复安全设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在登录MySQL的时候,如果忘记密码了应该怎么办?对于不同的用户有不同的密码破解方式。

目录

一、其他的普通用户

二、超级用户

1、破解MySQL的密码

2、 另外一种方式(Windows软件中修改)


一、其他的普通用户

使用超级用户登录,直接去修改密码就可以了。

alter user 'cali'@'%' identified by 'xxxx';  

其中的xxxx是修改为你想改的密码。本质上是修改mysql库里的user表里的对应的用户的auth_string

二、超级用户

root@localhost :只能在本地登录。

①修改/etc/my.cnf :加入skip-grant-tables表示跳过密码验证。

②使用另外一个管理员账号

③修改停止mysqld服务---中断业务

1、破解MySQL的密码

第1步:停止MySQL进程的运行。

service mysqld stop

[root@mysql-2 mysql]# service mysqld stop
Shutting down MySQL.. SUCCESS! 

第2步:修改配置文件。

vim /etc/my.cnf在其中加入一行:skip-grant-tables表示跳过密码验证

root@mysql mysql]# vim /etc/my.cnf
[mysqld]
user=mysql     #指定启动MySQL进程的用户
skip-grant-tables  #跳过密码验证(加入这一行)
#validate-password=off  #需要禁用密码复杂性策略

 第3步:启动MySQL进程。

service mysqld start

[root@mysql mysql]# service mysqld start  启动MySQL进程
Starting MySQL. SUCCESS! 

 第4步:登录MySQL,不接密码。

mysql -uroot -p

[root@mysql-2 mysql]# mysql  -uroot -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.25 Source distribution

Copyright (c) 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.

 在进入数据库中执行设置密码的命令:alter user 'root'@'localhost' identified by 'xxxx';这条命令时会报错。

mysql> alter user 'root'@'localhost' identified by  'xxxx'; --》会报错
ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement

所以需要先刷新权限在执行上面那条设置密码的命令。

flush privileges; 会加载原来没有加载的权限表(重新加载跳过的表)--》用户名和密码所在的表user等)

mysql> flush privileges; 刷新权限(会加载原来没有加载的权限表(重新加载跳过的表)--》用户名和密码所在的表user等)
Query OK, 0 rows affected (0.01 sec)

设置密码:两种方法(任选其一):xxxx是表示你要设置的新密码。

set password for 'root'@'localhost' = 'xxxxx';

alter user 'root'@'localhost' identified by 'xxxx';

mysql> set password for 'root'@'localhost' = 'xxxxx';    --》修改密码,指定用户名为root@localhost
Query OK, 0 rows affected (0.00 sec)

root@(none) 10:35  scmysql>alter user  'root'@'localhost'  identified by 'xxxx';
Query OK, 0 rows affected (0.00 sec)

#退出MySQL
mysql> quit
Bye

 扩展:root@(none) 10:40 scmysql>    : mysql里完整的用户信息是 用户名@主机名。

第5步:重新修改mysql的配置文件

vim /etc/my.cnf

[mysqld]
socket=/data/mysql/mysql.sock
#user=mysql    --》注释掉
#skip-grant-tables           --》注释掉

记得将刚刚添加的注释掉,不能如果跳过密码验证的话,你是MySQL是不安全的哦。

第6步:刷新服务

 service mysqld restart

[root@mysql-2 mysql]# service mysqld restart  #重新刷新服务
Shutting down MySQL.. SUCCESS! 
Starting MySQL. SUCCESS! 

 第7步:验证修改密码是否成功

使用你刚刚修改之后的密码重新登录数据库看密码是否修改成功。

[root@mysql-2 mysql]# mysql  -uroot -p'xxxxx'
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.25 Source distribution

Copyright (c) 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.

2、 另外一种方式(Windows软件中修改)

就是使用其他的管理员账号给别的用户重新设置密码。可以在SQLyog里操作。

SET PASSWORD FOR 'root'@'localhost' = 'xxxxx';

alter user 'root'@'localhost' identified by 'xxxxx';

以上就是忘记MySQL用户密码,修改密码的整个过程,希望你能记得住密码, 用不到这篇文章。

### 如何重置 MySQL root 用户密码 #### 停止 MySQL 服务 为了安全起见,在执行任何更改之前,应当先停止 MySQL 服务。这可以通过命令行工具完成。 对于 Linux 系统: ```bash sudo systemctl stop mysql.service ``` 对于 Windows 系统,则可以在命令提示符下输入 `net stop mysql` 或者通过服务管理器找到 MySQL 并停止它[^1]。 #### 启动 MySQL 不带授权表加载 接着以跳过权限验证的方式启动 MySQL 数据库实例,以便能够绕过当前的访问控制机制: 在 Linux 上可以这样操作: ```bash mysqld_safe --skip-grant-tables & ``` 而在 Windows 中则需运行如下指令: ```cmd mysqld --console --skip-grant-tables ``` 此时 MySQL 将不会读取默认的用户认证信息文件,允许无密连接到服务器并修改账户设置[^2]。 #### 修改 root 密码 成功进入 MySQL 控制台之后,就可以更新 root 用户的信息了。需要注意的是不同版本之间语法有所区别;这里给出适用于 MySQL 5.7 及以上版本的操作方式: ```sql FLUSH PRIVILEGES; ALTER USER 'root'@'localhost' IDENTIFIED BY '新的密码'; ``` 如果上述语句不被识别可能是更早版本的 MySQL ,这时应该采用旧版 SQL 语法: ```sql SET PASSWORD FOR 'root'@'localhost' = PASSWORD('新的密码'); ``` 最后记得再次刷新权限缓存确保变更生效[^3]。 #### 重启 MySQL 服务恢复正常工作模式 当所有必要的调整完成后,关闭临时开启的服务进程,并按常规流程重新激活 MySQL 。随后即可利用刚设定的新凭证正常登陆系统管理员角色。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

欢喜躲在眉梢里-柚子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值