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

Posted cgtcsdn

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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。

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

    service mysqld restart
    

  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
    

  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

1.2问题二

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

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

又报错:ERROR 1396 (HY000): Operation ALTER USER failed for 'root'@'localhost'

报错问题解决

1.ERROR 1819 (HY000)解决:

1.1查看MySQL初始的密码策略

SHOW VARIABLES LIKE 'validate_password%';

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

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

2.ERROR 1396 (HY000)解决:

2.1查看root账户的host

select user,host from user;

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

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

将命令改成:

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

问题解决!

以上是关于CentOS环境下MySQL 8.0重置登录密码的主要内容,如果未能解决你的问题,请参考以下文章

忘记 mysql 8.0 root 密码 怎么修改

centos7下,忘记mysql2.5.版本的登录密码,如何重置及登陆

MySQL重置密码

MySQL 8.0重置密码

CentOS 7.2 MySQL的root密码忘记时重置方法

CentOS重置Mysql密码