前言:
重启电脑后,mysql莫名其妙连接不上(可能是之前改了远程连接导致的),网上千篇一律的资料,基本都无法解决当前问题,找了好久,记录一下,希望对解决相关问题有帮助
环境及配置:
主机环境:win11
mysql版本:mysqld 8.0.37
安装路径::\Program Files\MySQL\MySQL Server 8.0
安装目录下没有*.cnf或my.ini配置文件
解决方案
注意:我安装mysql的时候默认路径未更改过,如果有安装在其它路径下的,请注意打开cmd命令窗口的路径;直接win+R打开的cmd窗口,执行mysqld命令不生效,所以找到mysql的安装路径下再执行
1.停止mysql服务
必须在mysql安装C:\Program Files\MySQL\MySQL Server 8.0\bin目录下,否则命令可能不生效;
目录打开cmd窗口小技巧
2.执行跳过权限验证的命令
注意:此处有坑,以下两条命令,需按自己系统安装mysql的情况而执行。如果mysql安装目录C:\Program Files\MySQL\MySQL Server 8.0存在data文件,执行2.1步骤;否则执行2.2步骤;
Q1.我当前执行2.1步骤出错了,排查原因就是mysql的数据没在Program Files文件夹下,而在ProgramData文件夹,所以更改命令带上配置执行2.2步骤;
Q2.网上有建议把ProgramData下的data文件复制到Program Files下面,但是此方法是能正常执行当前命令,后续更改的密码后,重启服务还是无法登录,原因是更改的Program Files下面复制过来的data文件里面的密码,服务启动后加载的是ProgramData下面的数据,所以相当于没操作;
Q3.ProgramData下面的data文件创建快捷方式复制到Program Files下面也不行,应该是mysql加载数据配置的时候无法识别此引用文件;
2.1执行 mysqld --console --skip-grant-tables --shared-memory
2.2执行 mysqld --defaults-file="C:\ProgramData\MySQL\MySQL Server 8.0\my.ini" --console --skip-grant-tables --shared-memory
3.更改密码
3.1同样的方式打卡一个新的命令窗口登录mysql并切换mysql数据库
mysql
use mysql
执行 select host, user, authentication_string, plugin from user; 命令后可查看当前用户信息;
3.2依次执行以下命令修改密码
update user set authentication_string='' where user='root';
flush privileges;
alter user 'root'@'%' identified by '你的新密码';
4.重启mysql服务
4.1在之前步骤2.1或者2.2的窗口中,ctr+c结束之前的命令;再执行启动mysql服务的命令
ctr+c
net start MySQL8
5.总结
5.1mysql版本众多,windowns也在不断的更新,所以以前的一些配置和教程可能会无法解决当前问题。还需根据系统环境和软件的实际版本作相应的调整;