Mysql-1045报错——一个完全没想到的错误角度....

问题概述

Windows10操作系统,使用IDE中自带的DB管理系统进行使用。在配置后,目前已经正常使用半个多月。
今早开工,开数据库时候发现报错mysql登录报错:ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
这个错误网上很多,其意思就是登录被拒绝,大多数情况是密码错误、权限不足等。
我完全一脸懵逼——我昨天下班前还正常使用,今天来了也没有任何操作,就直接登不上去了。

排查

常规操作

(重启已尝试过)
先本地登录,失败。

任务管理器检查Mysqld正常运行。

换了root账户,登录成功。

查询用户情况

如图,我惊奇的发现:我账户无了!!
Mysql-1045报错——一个完全没想到的错误角度...._第1张图片

查询数据库、表的情况

我的库也无了!
Mysql-1045报错——一个完全没想到的错误角度...._第2张图片

我的震惊!!

看起来就像是整个Mysql被重置了一样,删除了我的账户、删除了我的库。因此计划排查log,去查看是什么原因操作导致了重置。

log的折磨

Mysql-1045报错——一个完全没想到的错误角度...._第3张图片
主机名.err文件内的内容,发现除了一些警告,都没啥问题也…

随后查看binlog,bin2sql这个实在是太难用了…
也无果。

相关查询内容也无果

binlog直接打开是这样…
在这里插入图片描述其他的一些查询Mysql-1045报错——一个完全没想到的错误角度...._第4张图片

之后还排查了Windows的日志,也无果…

总之就是…各种无果

顿悟

怀疑本地有多个MySQL服务的原因,所以冲突。
因此去Windows的服务中,关闭了Mysql80服务,启动了Mysql82服务。成功!
在这里插入图片描述

问题解决

正如大家都知道的那样,1045这个报错代表的是密码错误,用户名权限问题。
而不同版本Mysql,所进行存储的位置路径都是不同的,是两个单独的服务。
因此我拿着自己在8.2下去创建的用户访问8.0下的表,那自然是无法成功 的。

因此——检查自己Mysql是否正常启动的同时,也检查一下版本启对了没有。

问题总结

1、Mysql多版本,各是各的。库、表内容都是单独的。因此对同一个软件的不同版本,也应该提起注意 保持敏感。

2、装软件的时候,版本选对了,别太追新的。更别装多了,装错了。记得一直有个梗“能卸载干净xxx,说明这个人技术很不错了”。很多时候安装错误、卸载重来,都会引起莫名其妙的bug。多个版本,也是同理。

3、库突然没了还是挺可怕的,这只是我localhost的一个测试库,但如果是团队的测试库甚至…那不堪设想。因此对于数据安全还是多注意,对于binlog这些恢复手段,感觉八股文里面的p用没有,会怎么用才是重要的,如何转换成自己看得懂的,去利用log来排查解决问题。其次就是也要自行做好数据备份,比如建表语句 binlog恢复是需要用到他的。

遗留问题

此次问题是由启动了错误版本的Mysql所导致
那么问题来了,他是为何 在我不知情的情况下进行了切换呢?
Mysql-1045报错——一个完全没想到的错误角度...._第5张图片
从日志中可以看到,他每7天会进行一次启动(时间来看,我还没上班。应该是电脑注销没有关机的原因)

但前几次启动,都因为端口被占用而失败。可这一次为什么成功了呢?
在这里插入图片描述
从Windows的服务页面中可以看到,启动类型是自动,那是否是这个自动的策略有关决定了他每7天检测一次(之前没装8.2时候也是每周一次)

至于前几次失败这一次成功,我猜测是因为启动时候端口分配是随机的?但前几次分配到了占用的端口所以失败,这一次分到的是空的所以成功,然后顺手挂掉了正在运行的8.2????我觉得应该不至于是这么离谱的原因,但目前也还没有分析到具体原因。

一些探索

顺着猜测,去分别查看了8.0和8.2版本的log(主机名.err这个文件)。

8.2Mysql-1045报错——一个完全没想到的错误角度...._第6张图片

8.0
发现这俩服务,在昨天今天好像大战一场?互相想把对方挤掉。。

Mysql-1045报错——一个完全没想到的错误角度...._第7张图片

所以我现在猜测的结论是:
凌晨2点时候,8.0版本进行了启动(在8.2已启动的情况下。不知是否因为电脑锁屏未关机的影响?)

随后8.2版本被挤掉,多次尝试重启无果。

早上10点,我使用连接时候,请求了8.0,因此错误。

更新1:再次遇到这个问题

今天是12.21,下午我重启了一次电脑,重启后就遇到了这个问题。发现版本的MySQL是一开机就自动启动了。因此我怀疑,是每周一次检查、自动启动+顶掉82。我下周再观察一下看看。至于为什么Windows服务这么设置我就也不懂了。

在这里插入图片描述

你可能感兴趣的:(#,Mysql,莫名其妙的报错——我太傻了,mysql,数据库)