不知道MySQL密码怎么办?|不卸载重装的处理办法

在日常工作中,我们可能会遇到 MySQL 密码丢失的情况。这篇文章将会为大家详细讲解如何在 MySQL 密码丢失的情况下,通过跳过权限表来重置 MySQL 密码。

1. 停止 MySQL 服务

首先,我们需要停止 MySQL 服务,避免数据库正在运行时无法更改相关设置。可以通过以下命令停止 MySQL 服务:

sudo systemctl stop mysql

或者,如果你是使用的其他版本的 MySQL,可以使用:

sudo service mysql stop

2. 启动 MySQL 安全模式

接下来,我们启动 MySQL 的安全模式,跳过权限表,让我们可以直接登录 MySQL 进行修改。在安全模式下,MySQL 不会加载权限表,因此我们可以不需要密码直接进入 MySQL 命令行。

执行以下命令启动 MySQL 安全模式:

mysqld_safe --skip-grant-tables &

该命令会启动 MySQL 服务,并跳过授权表加载,允许我们在没有密码的情况下直接访问 MySQL。

注意:这个命令通常会在后台运行,因此你不需要等待它完成。

在某些系统(例如 Ubuntu 和其他基于 Debian 的发行版)中,mysqld_safe 可能并不存在或者路径不同。你可以尝试以下几种方法来解决这个问题:

检查 mysqld_safe 是否存在

运行以下命令查找它的位置:

sudo find / -name "mysqld_safe" 2>/dev/null

如果它存在但路径不同,可以直接使用完整路径来启动,例如:

sudo /usr/local/mysql/bin/mysqld_safe --skip-grant-tables &

使用 mysqld 替代

如果没有 mysqld_safe,可以直接使用 mysqld 命令来跳过权限表验证:

sudo mysqld --skip-grant-tables &

3. 登录 MySQL

启动安全模式后,打开一个新的终端窗口,通过以下命令登录到 MySQL:

mysql -u root

此时无需密码即可登录到 MySQL 的命令行界面。

4. 重置密码

成功登录 MySQL 后,执行以下 SQL 命令来重置 root 用户的密码:

USE mysql;
UPDATE mysql.user SET authentication_string=PASSWORD('your_new_password') WHERE User='root';
FLUSH PRIVILEGES;
EXIT;

如果你的 MySQL 版本不支持 authentication_string 字段,使用以下命令:

UPDATE mysql.user SET password=PASSWORD('your_new_password') WHERE User='root';
FLUSH PRIVILEGES;
EXIT;

在上述命令中,将 your_new_password 替换为你希望设置的新密码。

5. 停止 MySQL 安全模式

完成密码重置后,我们需要停止 MySQL 的安全模式。你可以通过查找 mysqld_safe 进程并停止它来完成。

使用以下命令查找 mysqld_safe 进程:

ps aux | grep mysqld_safe

找到 mysqld_safe 的进程 ID(PID),然后停止它:

sudo kill <PID>

6. 重启 MySQL 服务

停止安全模式进程后,重新启动 MySQL 服务以恢复正常操作:

sudo systemctl restart mysql

或者使用以下命令重启服务:

sudo service mysql restart

7. 使用新密码登录

现在,MySQL 已经恢复正常,您可以使用新密码登录了:

mysql -u root -p

系统会提示你输入新设置的密码,验证密码是否正确。

总结

以上就是解决 MySQL 密码丢失并重置密码的完整步骤。在没有密码的情况下,我们通过跳过权限表启动 MySQL,然后重置密码。重置后,确保恢复 MySQL 服务正常运行,并验证密码是否生效。

相关推荐
0wioiw02 小时前
Python基础(SQLAlchemy)
java·开发语言·数据库
CodeJourney.2 小时前
DeepSeek 关联 Word 使用教程:解锁办公新效率
数据库·人工智能·算法
ChinaRainbowSea2 小时前
十四. Redis 新功能
java·数据库·redis·缓存·bootstrap
NineData3 小时前
NineData云原生智能数据管理平台新功能发布|2025年1月版
数据库·人工智能·云原生·oracle·ninedata
Java小王子呀3 小时前
SQL写法:行行比较
数据库·sql
m0_748245743 小时前
C#数据库操作系列---SqlSugar完结篇
网络·数据库·c#
羊小猪~~4 小时前
MYSQL学习笔记(七):新年第一篇之子查询
数据库·笔记·后端·sql·学习·mysql·考研
无聊的烤苕皮5 小时前
MySQL第五次作业(触发器、存储过程)
android·mysql·adb
小虚竹5 小时前
从MySQL优化到脑力健康:技术人与效率的双重提升
数据库·mysql
三月七(爱看动漫的程序员)6 小时前
基础链的使用
网络·数据库·人工智能·语言模型·自然语言处理·prompt·智能路由器