不知道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 服务正常运行,并验证密码是否生效。

相关推荐
weixin_307779135 分钟前
Linux下用Bash Shell脚本和mysql命令行程序实现带多组参数和标签的MySQL数据库批量数据导出程序
linux·开发语言·数据库·mysql·bash
是阿建吖!7 分钟前
【MySQL】复合查询
android·数据库·mysql
老马啸西风1 小时前
Neo4j GDS-02-graph-data-science 插件库安装实战笔记
数据结构·数据库·笔记·算法·neo4j·
LoveYa!1 小时前
《数据库原理教程》——第二章 实体-联系模型 笔记
数据库·笔记·sql·学习
斯密码赛我是美女1 小时前
sql-labs
数据库·sql
多多*1 小时前
浅谈canal实例 在docker里面安装canal镜像 Canal监听MySQL数据库变更并同步更新Redis和Elasticsearch 示例
java·开发语言·数据库·mysql·算法·docker·cocoa
PingCAP2 小时前
TiDB × AI :DeepSeek 时代你需要什么样的数据基座
数据库·人工智能·tidb
罗念笙2 小时前
Redis 的哈希 hash是什么?
数据库·redis
C语言小火车2 小时前
经典面试题:C/C++中static关键字的三大核心作用与实战应用
c语言·开发语言·数据库·c++·面试·面试题