详细分析linux中的MySql跳过密码验证以及Bug(图文)

目录

  • 1.问题所示
  • [2. 基本知识](#2. 基本知识)
  • [3. 解决方法](#3. 解决方法)
    • [3.1 跳过验证Bug](#3.1 跳过验证Bug)
    • [3.2 设定初始密码](#3.2 设定初始密码)

1.问题所示

发现密码验证错误,遗失密码

2. 基本知识

  1. 停止MySQL服务sudo systemctl stop mysql

  2. 以跳过权限表模式启动MySQLsudo mysqld_safe --skip-grant-tables &

  3. 登录MySQLmysql -u root

  4. 重置root用户密码:(不同版本不一,如果执行出错,可看下文)

sql 复制代码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
FLUSH PRIVILEGES;
  1. 重新启动MySQL服务sudo systemctl start mysql

3. 解决方法

根据上述的基本知识操作进行演示,过程中可能会出现个别Bug

3.1 跳过验证Bug

跳过验证的时候,如果出现如下提示:

javascript 复制代码
root@iZ7xv98hm4hq0dd3xv23vuZ:~# sudo mysqld_safe --skip-grant-tables &
[1] 720919
root@iZ7xv98hm4hq0dd3xv23vuZ:~# 2024-09-02T14:05:11.207426Z mysqld_safe Logging to '/var/log/mysql/error.log'.
2024-09-02T14:05:11.233525Z mysqld_safe A mysqld process already exists

[1]+  Exit 1                  sudo mysqld_safe --skip-grant-tables

截图如下:

先确保所有 MySQL 相关的进程都被停止:ps aux | grep mysqld

如果看到任何运行中的 MySQL 进程,使用 kill 或 kill -9 命令手动终止它们:sudo kill -9 <PID>

3.2 设定初始密码

使用的是 MySQL 5.7 或更高版本,密码字段通常是 authentication_string,但 PASSWORD() 函数可能已被弃用

sql 复制代码
UPDATE mysql.user SET authentication_string='123456' WHERE User='root' AND Host='localhost';

使用的是 MySQL 5.6 或更低版本,密码字段可能是 password,可以使用以下命令:

sql 复制代码
UPDATE mysql.user SET password=PASSWORD('123456') WHERE User='root' AND Host='localhost';

之后统一执行:`FLUSH PRIVILEGES;``

相关推荐
大聪明-PLUS3 小时前
关于新的 Linux 内核接口 gpio uapi 的说明
linux·嵌入式·arm·smarc
玉树临风江流儿3 小时前
Linux驱动开发总结速记
linux·运维·驱动开发
cccyi73 小时前
Linux 进程信号机制详解
linux·signal·volatile
workflower3 小时前
Fundamentals of Architectural Styles and patterns
开发语言·算法·django·bug·结对编程
花月C3 小时前
高效查找数据的数据结构—MySQL 索引
数据结构·数据库·mysql
gd63213744 小时前
银河麒麟 aarch64 linux 里面的 qt 怎么安装kit
linux·服务器·qt
A-花开堪折4 小时前
Qemu 嵌入式Linux驱动开发
linux·运维·驱动开发
磊灬泽4 小时前
【Linux驱动开发】PWM子系统-servo
linux·运维·算法
PiscesCanon4 小时前
达梦开启awr功能报错:[-7160]:Object [DBMS_WORKLOAD_REPOSITORY_DATA_LOW] is invalid
数据库·mysql
郝学胜-神的一滴5 小时前
Linux系统函数stat和lstat详解
linux·运维·服务器·开发语言·c++·程序人生·软件工程