背景场景

在 Ubuntu 系统中使用 aptdeb 包方式安装 MySQL 8 时:

  • 初次安装后会自动初始化数据库;
  • 没有提示 root 初始密码
  • 导致 mysql -u root -p 无法登录。

为了解决该问题,通常我们使用 --skip-grant-tables 方式跳过权限认证进入 MySQL,然后手动修改 root 密码,但这可能导致 权限表异常残留,重启后仍可免密登录


解决方案总览

我们将通过三步彻底修复这个问题:

  1. 启动 MySQL,跳过权限校验,进入无密码模式
  2. 清空 root 用户,重新创建 root 账户并配置密码
  3. 恢复配置文件,重启验证密码登录生效

步骤一:跳过密码验证启动 MySQL

1. 停止 MySQL 服务

sudo systemctl stop mysql

2. 启动 MySQL 并跳过授权验

sudo mysqld_safe --skip-grant-tables --skip-networking &

解释:

  • --skip-grant-tables: 跳过用户认证;
  • --skip-networking: 禁止远程连接(增强安全);
  • &: 后台运行。

3. 无密码登录 MySQL

mysql -u root

进入后会看到 mysql> 提示符。


步骤二:清除旧 root 用户并重新配置密码

1. 刷新权限(激活权限表)

FLUSH PRIVILEGES;

2. 删除所有旧 root 用户

DELETE FROM mysql.user WHERE User = 'root';

3. 创建新的 root 用户(本地登录)

CREATE USER 'root'@'localhost' IDENTIFIED BY 'YourStrongPassword';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION;

4. (可选)允许远程登录

CREATE USER 'root'@'%' IDENTIFIED BY 'YourStrongPassword';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;

5. 强制刷新权限

FLUSH PRIVILEGES;

6. 退出 MySQL

exit;

步骤三:恢复安全配置并验证

1. 停止无密码运行的 mysqld_safe

sudo pkill mysqld

2. 检查并删除 my.cnf 中跳过权限的配置项(如有)

sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

确保 [mysqld] 部分中 没有 skip-grant-tables

3. 重启 MySQL

sudo systemctl restart mysql

4. 使用密码登录验证

mysql -u root -p
# 输入上面新设置的密码

常见问题解答

为什么删除了配置后还是免密?

mysql.user 表中旧的 root 用户没有密码,权限系统仍然允许直接登录。

为什么 CREATE USER 失败?

--skip-grant-tables 模式下权限未激活,部分语句需要先执行 FLUSH PRIVILEGES

ALTER USERUPDATE user 不生效?

可能是因为权限表没刷新、字段错误(MySQL 8 使用 authentication_string 字段),或因为之前的 root 用户已经损坏。


总结

步骤关键操作
跳过验证--skip-grant-tables 模式启动
修复 root删除 + 重新创建 + 设置密码
权限生效FLUSH PRIVILEGES 是关键命令
安全恢复移除配置、重启服务、验证密码

该方案适用于无法找到初始密码、root 用户权限损坏等问题,是 MySQL 密码修复最稳妥的方式。


附加建议

  • 修改密码后建议立即执行:
ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
  • 建议设置复杂密码,并定期备份 mysql.user 表;
  • 如部署环境建议开启 skip-name-resolve 提升性能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/88228.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/88228.shtml
英文地址,请注明出处:http://en.pswp.cn/web/88228.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

题解:P13017 [GESP202506 七级] 线图

首先明白定义: 线图 L(G)L(G)L(G) 的顶点对应原图 GGG 的边,当且仅当原图中的两条边有公共顶点时,对应的线图顶点之间有一条边。 不难想到,对于原图中的每个顶点 vvv,其度数 d(v)d(v)d(v) 对应的边集可以形成 (d(v)2)\…

c++ duiLib环境集成2

继续上一篇,现在需要把控制台隐藏,只显示调用duiLib框架显示的窗口。右键项目 → 属性 → 链接器 → 系统 → ‌子系统‌改为 窗口(/SUBSYSTEM:WINDOWS)。原来是这样:修改为:运行报错:需要修改入口函数为WinMain。如下…

常见的网络攻击方式及防御措施

常见的网络攻击方式及防御措施:全面解析网络安全威胁 前言肝文不易,点个免费的赞和关注,有错误的地方请指出,看个人主页有惊喜。 作者:神的孩子都在歌唱在信息化高速发展的今天,网络安全威胁无处不在&#…

JavaScript 中导入模块时,确实不需要显式地写 node_modules 路径。

1. 正确的导入语法在 Webpack、Vite 等打包工具中,node_modules 目录是默认的模块搜索路径,因此直接写包名即可:// ✅ 正确:直接使用包名import nprogress/nprogress.css;// ❌ 错误:不需要显式写 node_modules 路径im…

ELK Stack技术栈

文章目录一、日志收集所解决的问题二、Elastic Stack 组件介绍2.1 Elasticsearch2.2 Logstash2.3 Kibana2.4 Filebeat beats三、ELK Stack集群安装3.1 安装JAVA环境(所有ES节点)3.2 安装ES集群3.2.1 ES单节点部署3.2.2 ES JAVA调优:堆(heap)内…

大腾智能国产 3D CAD:设计自由度拉满,数据安全锁死

在智能制造与数字化转型的浪潮中,大腾智能CAD作为一款自主研发的三维计算机辅助设计软件,凭借其从概念设计到制造落地的全流程覆盖能力,正成为国产工业设计软件领域的新锐力量。软件深度融合先进建模技术与工程实践需求,为机械制造…

ubuntu 操作记录

1:安装minicom 1: sudo apt-get install minicom minicom -s 2:Ctrl Z C 的区别 ctrlz的是将任务中断,但是此任务并没有结束,他仍然在进程中他只是维持挂起的状态,用户可以使用fg/bg操作继续前台或后台的任务,fg命令重新启动前台被中断的任务,bg命令…

深度剖析:向70岁老系统植入通信芯片——MCP注入构建未来级分布式通信

> 如何让老旧系统重获新生?协议注入技术是关键。 ## 一、当遗留系统遇上分布式未来:一场艰难的对话 想象一下:你负责维护一套诞生于20年前的单体式银行核心系统,它像一位固执的70岁老人,使用着陈旧的TCP自定义协议。这时业务部门要求实现与云原生风险分析引擎的实时…

针对 SSD 固态硬盘的安全擦除 Secure Erase

SSD 的安全擦除(Secure Erase)用于永久删除存储介质上的数据,以及在驱动器性能开始明显下降至低于标称值时恢复其速度。Secure Erase 可以解决的问题核心当 SSD 开始运行缓慢(读写数据变差)时,这里有许多可…

Three.js搭建小米SU7三维汽车实战(3)轨道控制器

往期内容: Three.js搭建小米SU7三维汽车实战(1)搭建开发环境 Three.js搭建小米SU7三维汽车实战(2)场景搭建 轨道控制器 轨道控制器可以改变相机在空间坐标系中的位置 进而方便从不同的角度观察物体 1. 轨道控制器响…

C++树状数组详解

C树状数组深度解析 第1章 引言:为什么需要树状数组 1.1 动态序列处理的挑战 在现代计算机科学中,我们经常需要处理动态变化的序列数据,这类数据具有以下特点: 实时更新:数据点会随时间不断变化频繁查询:需要…

TeamT5-ThreatSonar 解决方案:构建智能动态的 APT 与勒索软件防御体系

一、核心功能深度解析:从威胁狩猎到自动化响应的闭环能力 (一)威胁狩猎:主动挖掘潜伏性攻击的 “数字侦探” 多层级威胁识别引擎: 静态特征匹配:内置超 1000 种 APT 后门签名(如 Regin、Duqu 等…

C#基础篇(10)集合类之列表

C# 中的列表(List)详解列表(List)概述在C#中&#xff0c;List<T>是System.Collections.Generic命名空间中的一个泛型集合类&#xff0c;它提供了动态大小的数组功能&#xff0c;可以存储指定类型的元素。列表的创建与初始化// 创建一个空列表 List<int> numbers n…

SpringBoot订单模块核心接口设计与实现

目录 一、 管理端接口实现 (后台管理系统) 一、订单搜索 (高权重 - 核心管理功能) 1.Controller (OrderController): 2.Service (OrderService): 3.ServiceImpl (OrderServiceImpl): 1.使用MyBatis分页插件PageHelper 2.基础数据查询 4.Mapper (OrderMapper): 5.Mapper …

EXCEL链接模板无法自动链接到PowerBI?试试这个方法

在使用EXCEL链接模板连接PowerBI时&#xff0c;你有没有遇到如图所示的提示呢&#xff1a;下面我来分享一下&#xff0c;出现弹框的原因及解决方法&#xff1a;首先我们先看一下这个英文翻译&#xff0c;意思就是说&#xff0c;我们只能使一个PowerBI文件处于打开的状态&#x…

最新全开源礼品代发系统源码/电商快递代发/一件代发系统

简介&#xff1a;最新全开源礼品代发系统源码/电商快递代发/一件代发系统测试环境&#xff1a;Nginx PHP7.2 MySQL5.6图片&#xff1a;

Android 事件分发机制深度解析

一、事件分发机制核心概念1. 事件分发三要素要素作用关键方法事件(Event)用户触摸动作的封装MotionEvent分发者负责将事件传递给下级dispatchTouchEvent()拦截者决定是否截断事件传递&#xff08;仅ViewGroup&#xff09;onInterceptTouchEvent()消费者最终处理事件的组件onTou…

从威胁检测需求看两类安全监测平台差异

在网络安全领域&#xff0c;针对不同场景的威胁检测需求&#xff0c;衍生处了多种技术架构的安全监测平台。尽管它们的目标均为“识别异常行为、阻断潜在威胁”&#xff0c;但根据其核心引擎的配置的技术侧重点&#xff0c;可大致分为两类&#xff1a;聚焦基础入侵检测的平台与…

useContext:React 跨组件数据共享的优雅解决方案

关键点 useContext&#xff1a;React 提供的 Hook&#xff0c;用于在组件树中共享全局状态&#xff0c;简化跨组件数据传递。应用场景&#xff1a;主题切换、用户认证、语言设置和全局配置管理。实现方式&#xff1a;结合 createContext 和 useContext&#xff0c;实现灵活的状…

20250706-8-Docker快速入门(下)-Dockerfile介绍与基本使用_笔记

一、Dockerfile构建镜像1. Dockerfile概述&#xfeff;定义&#xff1a;Dockerfile是一个用于自动构建镜像的文本文件&#xff0c;由一条条指令组成工作原理&#xff1a;指令逐步执行&#xff0c;每个指令完成不同功能典型指令示例&#xff1a;FROM centos:latest&#xff1a;基…