当前位置: 首页 > news >正文

暴力解决MySQL连接失败

本文涉及

  1. 清空root密码

  2. 完全重置MySQL权限

  3. 彻底卸载并重装MySQL
    务必在测试/本地环境操作,生产环境慎用!

场景

Spring Boot项目连接MySQL一直报Access denied for user 'root'@'localhost',改密码、换驱动都没用?

步骤1:完全重置MySQL权限

1.1 停止MySQL服务

sudo systemctl stop mysql

1.2 以跳过权限方式启动MySQL(无密码直接root登录)

sudo mysqld_safe --skip-grant-tables &

1.3 登录MySQL(此时无需密码)

mysql -u root

1.4 清空root密码并刷新权限(⚠️此操作会移除所有权限限制)

UPDATE mysql.user SET authentication_string='', plugin='mysql_native_password' 
WHERE user='root';
FLUSH PRIVILEGES;
EXIT;

1.5 重启MySQL正常模式

sudo systemctl restart mysql

1.6 用空密码测试连接

mysql -u root  # 应该能直接登录
表格
测试结果问题根源解决方案
空密码可连接MySQL权限系统损坏执行mysql_secure_installation重建权限
空密码仍失败100%网络/防火墙问题继续看必杀技排查

💥 必杀技排查(空密码也失败时)

2.1 彻底绕过TCP/IP,用Unix Socket连接(Linux/Mac专属)

spring:datasource:url: jdbc:mysql:///your_db?socket=/var/run/mysqld/mysqld.sockusername: rootpassword: ""// 完全避开网络层,若失败说明MySQL服务本身异常。

2.2 用telnet暴力验证端口通不通

telnet 127.0.0.1 3306
  • 看到5.7.29之类版本号 → 端口通的,是认证问题

  • 连接被拒绝 → 防火墙/MySQL没启动

2.3 终极验证:用MySQL命令行客户端模拟JDBC行为

mysql -u root -p"p@ssword" --protocol=tcp -h 127.0.0.1
  • 成功 → Spring配置有问题

  • 失败 → MySQL服务端配置问题

现象问题根源解决方案
空密码可连接MySQL权限系统损坏mysql_secure_installation重建权限
只有socket能连MySQL绑定IP错误修改my.cnfbind-address=0.0.0.0
telnet不通防火墙/服务未启动sudo ufw allow 3306 或重装MySQL


最后的大招(全失败时用)

3.1 完全卸载MySQL

sudo apt purge mysql*
sudo rm -rf /etc/mysql /var/lib/mysql

3.2 重装MySQL并设置简单密码

sudo apt install mysql-server
sudo mysql_secure_installation

3.3 重新用root@%权限

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

✅ Spring Boot配置示例(最终可用版)

spring:datasource:url: jdbc:mysql://localhost:3306/your_db?useSSL=false&allowPublicKeyRetrieval=trueusername: rootpassword: simple123

总结

  1. 空密码测试 → 快速区分是权限还是网络问题

  2. Socket直连 → 100%排除网络干扰

  3. telnet验证 → 一眼看出端口是否通

  4. 重装大招 → 终局解法,99%问题搞定

以上是参考一些网上的方法总结之后用ai进行整理了一下,我发一下防止有朋友找不到解决方法浪费时间的,记录一下小bug也是,修改的时候也是浪费了好一顿力气。

http://www.lryc.cn/news/613687.html

相关文章:

  • 协同进化:AIGC、Agent和MCP如何相互促进共同发展
  • 内容分发机制研究:实测一款多源短视频聚合App
  • 医防融合中心-智慧化慢病全程管理医疗AI系统开发(上)
  • C++程序库选择:权衡与取舍的艺术——以iostream和stdio为例
  • 低压电工-------元器件认识
  • react+echarts实现个性化评分展示(类进度条)
  • AR眼镜:能源行业设备维护的“安全守护者”
  • Java 虚拟机之双亲委派机制
  • 接口自动化-pytest
  • 使用winsw把SpringBoot项目注册成window服务
  • Linux怎么查看时区信息?(Linux时区)(tzselect)
  • Xvfb虚拟屏幕(Linux)中文入门篇1:(wikipedia摘要,适当改写)
  • 容器 vs 虚拟机
  • 技法笔记3 | 验证交互式shell连接
  • 数据结构(五):顺序循环队列与哈希表
  • SkyWalking-1--SkyWalking是什么?
  • Kubernetes学习
  • 嵌入式开发学习———Linux环境下IO进程线程学习(六)
  • Qwen系列模型
  • 对比学习(Contrastive Learning)面试基础
  • STM32——STM32CubeMX
  • 4G/5G无线电单元系统
  • C语言:单链表学习
  • 北京-4年功能测试2年空窗-报培训班学测开-第七十天-面试第一天
  • rebase 和pull的通俗区别是什么
  • Flink与Kafka核心源码详解-目录
  • 【Unity3D实例-功能-镜头】第三人称视觉-镜头优化
  • 秋招笔记-8.7
  • iSCSI 服务器
  • 《C语言》函数练习题--3