问题描述
在某一天正常输入密码进入mysql的过程中出现了这样的问题:
yoho@~$ mysql -u root -p Enter password: ERROR 3118 (HY000): Access denied for user 'root'@'localhost'. Account is locked.
问题分析
查证一番之后就是账户被锁定了,在mysql.user中的用户的account_locked属性写成了N,正常应该是Y;
现在的问题就是需要进入到mysql中对这个值进行修改。。
问题是平时个人电脑上我就是用的root,其他也没有什么用户了,我就进不去mysql修改不料。
解决方法
一番摸索之后找到了一个方法,绕过权限检查机制登入mysql然后进行修改即可。
绕开权限检查机制的过程如下:
进入/etc/mysql/mysql.conf.d/下,有mysql.cnf和mysqld.cnf两个文件
你看你自己电脑上的东西是写在哪个文件上的,我的电脑上基本就是mysql.cnf是空的,配置都在mysqld.cnf上
对你要修改的文件先用sudo cp命令进行一个备份,再进行修改,防止发生意外
打开文件,在[mysqld]下添加一行配置:skip-grant-tables
保存之后重新启动mysql服务,
sudo ststemctl restart mysql
再用mysql -u root 就可以绕过权限直接登陆了
进入之后再对mysql.user表中的相应用户的account_locked字段的值进行修改
最后再将mysqld.cnf改回来重启mysql服务就可以了