记一次mysql登录失败排查修复

本文讲述了在Java程序中遇到MySQL连接失败的问题,通过安全启动MySQL、检查用户表和权限设置,最终发现可能是程序bug或数据目录损坏,修复过程包括创建新root用户并关闭安全启动设置。
摘要由CSDN通过智能技术生成

一、背景:

一天,检查java程序日志发现一直在报mysql连接失败,手动连接mysql时,发现也连不上,且,确认密码是正确的。
在这里插入图片描述

二、修复思路:

可能是程序bug或者其他用户的什么误操作改了密码。su -切换至root用户,通过安全启动mysql,跳过权限检查强行登录,然后重新给用户密码赋值。

三、安全启动mysql

1.先关闭mysql

systemctl stop mysqld

2.设置MySQL安全启动

systemctl set-environment MYSQLD_OPTS="--skip-grant-tables"

3.重新启动并登录

 systemctl start mysqld
 mysql -u root

注:

  1. 设置成安全启动后,不用再输入密码

4.尝试修改密码

use mysql;
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';

注:

  1. 失败了,继续排查思路,查看MySQL用户表,怀疑root的host不是localhost
  2. 这里的‘123456’是示例密码,改密码失败时也有可能是密码强度太低。当然,这个错时都会有明显的报错指向信息

在这里插入图片描述

5.查看用户表

use mysql;
select user,host from user;

注:

  1. 发现是连root用户都不见了,怀疑:可能性是程序bug,也可能是mysql的数据目录遭到损坏。
    在这里插入图片描述

6.重新创建root用户

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

注:

  1. 配成 ‘root’@'%'是为了方便能远程访问mysql。
    在这里插入图片描述

四、关闭mysql安全启动设置,重新启动

1.关闭mysql并关闭安全启动设置

systemctl stop mysqld
systemctl unset-environment MYSQLD_OPTS

2.重新启动并登录

systemctl start mysqld
mysql -u root -p

注:

  1. 启动成功
    在这里插入图片描述
  • 11
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值