此文章整理Mysql8.0+版本登录其他账号或不可登录的时候如何解锁
----如何会导致上锁情况
首先,我们在初期操作Mysql数据库的时候难免会遇到锁住用户登录不进去的情况发生(一般是密码输错很多次,我是学习的时候手动修改了)。实质是account_locked栏位变为Y了,导致后台文件卡控无法登录。
select host,user,account_locked from mysql.user
附带上锁的语句
update mysql.user set account_locked='Y' where user='root'
修改的时候可能会触发安全模式报警,执行底下的sql解除。
SET SQL_SAFE_UPDATES = 0;
有的同学修改完了之后重新登录mysql发现并没有上锁,其实是因为mysql 的服务一直在后台运行没有中断,这时候需要我们手动关闭再开启下即可达到上锁目的。
1.先在左下角输入框搜索cmd,右击最佳匹配的命令提示符以管理员身份运行(非管理员身份无法进行解锁操作哦)
2.执行命令先停服务再重新打开服务再登录mysql发现成功锁住。
net stop mysql(停止服务)
net start mysql(开启服务)
PS:有的小伙伴会发现执行CMD的时候提示找不到命令之类的是因为我提前设置了环境变量。我的电脑右击属性->高级系统设置->高级中选择环境变量(如下图找到path)
->打开后添加Mysql安装路径的环境变量保存即可。
3.这里有的同学会说cmd为啥我执行出来提示是服务名无效,请键入 NET HELPMSG 2185 以获得更多的帮助。解决方法操作如下:WIN+R打开services.msc寻找mysql相关开头的文件。可以把命令net stop mysql换成net stop mysql80(具体名称如图三找到的执行程式)。
也可以重新新建个mysql服务(不过要提前备份数据库里的数据哦)
在C:\Program Files\MySQL\MySQL Server 8.0(寻找自己本地的安装路径)找到data文件,把里面的文件全部清除
在cmd黑窗口输mysqld --initialize-insecure会执行成功or报错The service already exists!这时候删除data文件里面的所有文件删除再执行底下的语句(有重要数据要备份!)
sc query mysql(查询服务信息)
sc delete mysql(删除执行程式)
mysqld --initialize-insecure(重新创建)
mysqld --install(重新激活)
这次大伙就会发现执行成功了
net start mysql(执行mysql服务运行)
----开始解锁
1.首先停止运行mysql服务(net stop mysql)后执行(mysqld --console --skip-grant-tables --shared-memory),这样做的意义是跳过权限管控,让其不会出现mysql -uroot -p输入密码的时候提示Account is locked错误。底下这个小黑框不要关,否则无效!
2.然后重新cmd管理员身份打开个小黑框直接输入mysql
3.使其无密码进入后开始执行接触上锁操作。
注意直接执行sql会报错: The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement(MySQL服务器正在使用–skip grant tables选项运行,因此无法执行此语句)所以要先执行一下flush privileges(刷新权限)再执行sql后完美解决。
开始输入解除上锁的语句:
ALTER USER ‘root’@‘localhost’ ACCOUNT UNLOCK;(解除语句)
update mysql.user set account_locked=‘N’ where user=‘root’;(双重解除)
commit;(提交,很重要的步骤)
select user,host,account_locked from mysql.user;(最终查询下是否解除成功)
PS: 这样操作完了立刻去看数据库并没有解锁成功哦!还需要将黑窗口全部关闭重新打开CMD执行mysql服务后即可!
若新建的mysql服务的小伙伴root账户变成没有密码了,需要自己修改后登录,没有删除mysql服务操作的按照原始密码登录后成功,完美解决,[手动撒花]!(另外送上修改密码的语句)
UPDATE mysql.user SET authentication_string=password('123456') WHERE user='root' and host='localhost';
新人码字不易,各位大佬手下留情,感谢![狗头保护]