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

相关推荐
IvorySQL37 分钟前
PostgreSQL 分区表的 ALTER TABLE 语句执行机制解析
数据库·postgresql·开源
·云扬·1 小时前
MySQL 8.0 Redo Log 归档与禁用实战指南
android·数据库·mysql
IT邦德1 小时前
Oracle 26ai DataGuard 搭建(RAC到单机)
数据库·oracle
惊讶的猫1 小时前
redis分片集群
数据库·redis·缓存·分片集群·海量数据存储·高并发写
不爱缺氧i1 小时前
完全卸载MariaDB
数据库·mariadb
纤纡.2 小时前
Linux中SQL 从基础到进阶:五大分类详解与表结构操作(ALTER/DROP)全攻略
linux·数据库·sql
jiunian_cn2 小时前
【Redis】渐进式遍历
数据库·redis·缓存
橙露2 小时前
Spring Boot 核心原理:自动配置机制与自定义 Starter 开发
java·数据库·spring boot
冰暮流星2 小时前
sql语言之分组语句group by
java·数据库·sql
符哥20082 小时前
Ubuntu 常用指令集大全(附实操实例)
数据库·ubuntu·postgresql