mysql用户表root用户被锁定,无法登陆(Account is locked)
今天看到mysql的user表就打开了看看,看到root还有些权限是N,然后顺手就改成了Y,结果保存之后就凉凉了,数据库就打不开了,报“Account is locked”这个错误,上网排查了好半天才解决,解决方法记录一下。
解决思路:
1、使用skip-grant-tables 跳过密码验证,此时可以打开MySQL服务并登录
2、手动把user表的root权限修改回来
3、重置root密码
4、修改root密码
1.打开命令窗口cmd,输入命令:net stop mysql,停止MySQL服务;
2.开启跳过密码验证登录的MySQL服务,输入命令 :
mysqld --console --skip-grant-tables --shared-memory
3.此时再打开一个新的cmd,无密码登录MySQL,输入登录命令:
mysql -u root -p
4.登录成功后,此时cmd命令窗口不要关,去navicate就能重新打开数据库,找到user表,把root的权限改回来。
5.重置root的密码,回到cmd命令窗口,执行如下命令:
use mysql update user set authentication_string='' where user='root';
然后关闭所有的命令行窗口(此时mysql是关闭了的)
6.打开命令行,输入:net start mysql 启动MySQL服务。
7.输入登录命令:mysql -u root -p,会出现Enter password,这里不需要输入密码,直接点回车键即可
8.执行修改root账号的密码命令:
ALTER USER
'root'
@
'
localhost
'
IDENTIFIED BY
'新密码'
;
注意:如果你不确定你的账号是localhost还是%还是其他,你需要先查看一下,然后修改下命令再执行
查看user表结构命令:
select user,host from user;
比如我的就不是localhost,而是%,那我的命令就是第5步的:
alter user 'root'@'%' identified by 'root';
执行成功后会有Query OK提示,此时重启mysql服务就可以正常打开数据库了。