CentOS环境下MySQL 8.0重置登录密码

前言

安装MySQL后,忘记MySQL登录密码,遇到ERROR 1819,ERROR 1396等问题,此篇博客主要记录解决这些问题的过程。

步骤

  1. 设置MySQL为免密码登录
    vi /etc/my.cnf (部分Linux安装了vim,其命令则改为vim /etc/my.cnf)按【i】键进入编辑模式,在[mysqld]下面加上“skip-grant-tables”,按【Esc】键,然后输入“:wq”保存并退出vi。
    CentOS环境下MySQL 8.0重置登录密码_第1张图片

  2. 重新启动MySQL服务(使配置生效,此步骤不能省略)

    service mysqld restart
    

    CentOS环境下MySQL 8.0重置登录密码_第2张图片

  3. 清空旧密码
    3.1进入MySQL

    mysql -u root –p (无需输入密码,直接按回车键进入)
    

    3.2切换数据库

    use mysql
    

    3.3清空密码

    update user set authentication_string = '' where user = 'root';
    

    3.4退出

    quit
    

    CentOS环境下MySQL 8.0重置登录密码_第3张图片

  4. 删除免密码登录代码“skip-grant-tables”
    vi /etc/my.cnf,按【i】键进入编辑模式,删除[mysqld]下面的代码“skip-grant-tables”,按【Esc】键,然后输入“:wq”保存并退出vi。

  5. 退出MySQL

    exit
    
  6. 重设密码
    6.1【同2】重新启动MySQL服务(使配置生效,此步骤不能省略)

    service mysqld restart
    

    6.2进入MySQL

    mysql -u root –p (无需输入密码,直接按回车键进入)
    

    6.3切换数据库

    use mysql
    

    6.4修改密码

    ALTER USER 'root'@'%' IDENTIFIED BY 'snaiL_12';
    

    至此,大功告成,你可以通过新密码登录了。

关于报错问题如下:

1.1问题一

ALTER USER 'root'@'localhost' IDENTIFIED BY 'snaiL_123';

报错:ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
CentOS环境下MySQL 8.0重置登录密码_第4张图片
1.2问题二

百度一番,得知是密码策略问题,默认长度为8位,于是,我将密码改为8位的:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'snaiL_123';

又报错:ERROR 1396 (HY000): Operation ALTER USER failed for 'root'@'localhost'
CentOS环境下MySQL 8.0重置登录密码_第5张图片

报错问题解决

1.ERROR 1819 (HY000)解决:

1.1查看MySQL初始的密码策略

SHOW VARIABLES LIKE 'validate_password%';

CentOS环境下MySQL 8.0重置登录密码_第6张图片

1.2调整MySQL密码验证规则,修改 policy 和 length 的值。

set global validate_password.policy=0;(“0”等价于“LOW”,含义是只验证密码长度)
set global validate_password.length=8;(因为我之前动过密码长度,这里我将密码长度设为8)

CentOS环境下MySQL 8.0重置登录密码_第7张图片

2.ERROR 1396 (HY000)解决:

2.1查看root账户的host

select user,host from user;

CentOS环境下MySQL 8.0重置登录密码_第8张图片

2.2注意看,我的host是“%”,你输入的命令可能是:

ALTERUSER 'root'@'localhost' IDENTIFIED BY 'Snail@10'; 

将命令改成:

ALTER USER 'root'@'%' IDENTIFIED BY 'Snail@10'; 

问题解决!

你可能感兴趣的:(Linux)