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

相关推荐
success_a1 小时前
大故障:阿里云核心域名爆炸了
数据库·阿里云·云计算
@小红花3 小时前
MySQL数据库从0到1
数据库·mysql·oracle
[听得时光枕水眠]4 小时前
MySQL基础(三)DQL(Data Query Language,数据查询语言)
数据库·mysql·oracle
我科绝伦(Huanhuan Zhou)4 小时前
深入解析Oracle SQL调优健康检查工具(SQLHC):从原理到实战优化
数据库·sql·oracle
一只叫煤球的猫8 小时前
MySQL 8.0 SQL优化黑科技,面试官都不一定知道!
后端·sql·mysql
寒山李白8 小时前
MySQL安装与配置详细讲解
数据库·mysql·配置安装
文牧之8 小时前
PostgreSQL 的扩展pg_freespacemap
运维·数据库·postgresql
deriva9 小时前
某水表量每15分钟一报,然后某天示数清0了,重新报示值了 ,如何写sql 计算每日水量
数据库·sql
Leo.yuan10 小时前
数据库同步是什么意思?数据库架构有哪些?
大数据·数据库·oracle·数据分析·数据库架构