关于Mysql8.0+版本提示Account is locked(用户或表格上锁)解决办法(亲测有效)

此文章整理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,右击最佳匹配的命令提示符以管理员身份运行(非管理员身份无法进行解锁操作哦)
管理员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服务运行)
net start mysql

----开始解锁

1.首先停止运行mysql服务(net stop mysql)后执行(mysqld --console --skip-grant-tables --shared-memory),这样做的意义是跳过权限管控,让其不会出现mysql -uroot -p输入密码的时候提示Account is locked错误。底下这个小黑框不要关,否则无效!
在这里插入图片描述
2.然后重新cmd管理员身份打开个小黑框直接输入mysql
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';

新人码字不易,各位大佬手下留情,感谢![狗头保护]

猜你喜欢

转载自blog.csdn.net/NetScript1/article/details/106347475
今日推荐