问题描述

在某一天正常输入密码进入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然后进行修改即可。

绕开权限检查机制的过程如下:

  1. 进入/etc/mysql/mysql.conf.d/下,有mysql.cnf和mysqld.cnf两个文件

  2. 你看你自己电脑上的东西是写在哪个文件上的,我的电脑上基本就是mysql.cnf是空的,配置都在mysqld.cnf上

  3. 对你要修改的文件先用sudo cp命令进行一个备份,再进行修改,防止发生意外

  4. 打开文件,在[mysqld]下添加一行配置:skip-grant-tables

    image-20231010105156468

  5. 保存之后重新启动mysql服务,sudo ststemctl restart mysql

  6. 再用mysql -u root 就可以绕过权限直接登陆了

  7. 进入之后再对mysql.user表中的相应用户的account_locked字段的值进行修改

  8. 最后再将mysqld.cnf改回来重启mysql服务就可以了