MySQL重置密码

MySQL重置密码

可能由于各种原因,我们不小心丢掉了MySQL密码,要用的时候无法登陆了,只能重置密码了!该配置修改文档是在Linux Ubunt环境下进行的,其他操作系统亦可作为参考,原理一样!

  1. 修改MySQL的配置文件,跳过登录时的权限验证

    CentOS是在 /etc/my.cnf
    Ubunt的mysql配置文件路径:
    sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

     #在[mysqld]下追加上 skip-grant-tables
     [mysqld]
         ...
     skip-grant-tables
    
  2. 重启mysql服务使配置生效

    sudo service mysql restart

  3. 重启完mysql服务之后我们再次执行mysql登录命令,会发现不用输入密码即可登录.

    mysql -u root -p

    回车完会提示输入密码,不用输密码直接回车即可登录

  4. 重置root账户密码

    重置root密码为空

    update mysql.user set authentication_string="" where user="root";

    重置 root 用户的密码为空(5.7 之前为 password 字段)

    修改root密码

    update mysql.user set authentication_string=password("pswd") where user="root";

    在重置 root 密码的同时,也可以设置默认密码。不过密码不能为明文,必须使用 password() 函数加密

  5. 刷新权限表

    flush privileges;

重置root密码,刷新权限表之后退出mysql命令行,将刚在配置文件中添加的跳过权限验证的配置命令删除.最后重启mysql服务即可用root用户密码登录!

  1. 删除添加的跳过权限验证配置命令,重启mysql服务

    sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

     #删除或注释刚才在[mysqld]下追加 skip-grant-tables
     [mysqld]
         ...
     #skip-grant-tables
    

重启mysql服务

sudo service mysql restart

出于安全考虑我们不会让MySQL用户无密码即可登录,要在重置完密码后为root账户设置密码

设置密码要把配置文件中的跳过权限验证命令去掉以后重启mysql服务登录设置才行,不然会提示没有验证,无权限操作

方法1:

以 root 身份登录 mysql后,再使用 set password 命令修改密码:
set password for root@localhost = password("new_password");

方法2:

mysqladmin -u root -p password "new_password"
#执行该命名后会提示输入原密码,输入正确后即可修改。

方法3:

update mysql.user set authentication_string=password("pswd") where user="root";
#在重置 root 密码的同时,也可以设置默认密码。不过密码不能为明文,必须使用 password() 函数加密

使用该方法之后需刷新权限列表:
flush privileges;
原文地址:https://www.cnblogs.com/sungeng/p/8351630.html