当前位置: 首页 > 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.dtcms.com/a/320615.html

相关文章:

  • 应用层自定义协议
  • Spring系列之Spring AI入门
  • 关于“致命错误:‘https://github.com/....git/‘ 鉴权失败”
  • 基于Vue.js和Golang构建高效在线客服系统:前端实现与后端交互详解
  • Linux学习-数据结构(哈希表)
  • K8s 常见故障案例分析
  • Axure基于中继器实现的组件库(导航菜单、动态表格)
  • k8s调度问题
  • 实战:在已有K8S集群如何新增和删除Node节点
  • 【网络自动化】利用Python脚本与计划任务,实现H3C/HPE设备配置无人值守备份
  • 冰蝎--安装、使用
  • BOM(物料清单)详解:定义、类型、差异与作用
  • 【跨国数仓迁移最佳实践5】MaxCompute近线查询解决方案助力物流电商等实时场景实现高效查询
  • Python 属性描述符(方法是描述符)
  • MySQL 配置性能优化赛:核心策略与实战技巧
  • 新客户 | TDengine 时序数据库是怎么在钢厂“撬动”PI 的?
  • [Flutter] v3.24 AAPT:错误:未找到资源 android:attr/lStar。
  • 详解 Seaborn:让数据可视化更简单高效的 Python 库
  • 使用Python爬虫,selenium能否替代requests?
  • centos出现ping: baidu.com: 未知的名称或服务问题
  • 每日五个pyecharts可视化图表:条形图与关系图
  • 【Centos】Redis 单机部署图文步骤
  • Vue3 基本语法
  • 《从零构建大语言模型》学习笔记2,文本数据处理1(以及tiktoken库无法下载gpt2参数,调用get_encoding时SSL超时的解决方法)
  • 【lucene】PostingsEnum.freq()
  • CVRF 是什么?微软弃用 MS 编号后,网络安全的下一个标准
  • C/C++与JavaScript的WebAssembly协作开发指南
  • 电脑定时开关机终极指南
  • 2025小程序怎么快速接入美团核销,实现自动化核销
  • PeiQi网络安全知识文库PeiQi-WIKI-Book保姆式搭建部署教程