MySQL忘记root用户密码以及误删除所有用户解决方法

文章目录

      • MySQL用户密码忘记/丢失后的处理
    • mysql用户全部误删除恢复方法
    • 忘记root密码的解决方法

MySQL用户密码忘记/丢失后的处理

mysql用户全部误删除恢复方法

问题:

把mysql中的用户全部删除后如何恢复?

解决方法一:

重新初始化数据库

说明:
如果自己的测试环境使用此方法还可以,但是如果删除的是生产环境中的数据库用户,此方法就无法使用了。

解决方法二:

#关掉数据库
/etc/init.d/mysqld stop
Shutting down MySQL.. SUCCESS!

#无视用户权限表启动mysql
mysqld_safe --skip-grant-tables --skip-networking &
[1] 8158

#然后登录到数据库
mysql
#这里因为跳过用户表所以可以不用指定用户和密码就能登录进来

#进入mysql库
mysql> use mysql;

#添加用户并赋予密码
insert into user (user,host,password,ssl_cipher,x509_issuer,x509_subject) values('root','localhost',PASSWORD('123'),'','','');
#mysql里自带的函数

#关闭、开启数据库
/etc/init.d/mysqld stop
/etc/init.d/mysqld start
Starting MySQL. SUCCESS!

#登录数据库
mysql -uroot -p123

#给用户授权:看下面的问题二
insert into mysql.user values ('localhost','root',PASSWORD('123'),
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'','','','',0,0,0,0,'mysql_native_password','','N');
  • 问题一:上面使用的参数说明
 --skip-grant-tables   #使用连接层验证模块

跳过权限表,可以不用输入密码就能用客户端连接,非常危险配合 --skip-networking参数使用,如下图。
MySQL忘记root用户密码以及误删除所有用户解决方法_第1张图片

 --skip-networking

拒绝外部网络随意连接,只能通过本地socket文件连接,安全!

  • 问题二:为什么要授权用户权限?
    查看用户权限表
mysql> select * from mysql.user\G
*************************** 1. row ***************************
                  Host: localhost
                  User: root
              Password: *23AE809DDACAF96AF0FD78ED04B6A265E05AA257
           Select_priv: Y
           Insert_priv: Y
           Update_priv: Y
           Delete_priv: Y
           Create_priv: Y
             Drop_priv: Y
           Reload_priv: Y           #<<--发现这里所有的权限都是yes
         Shutdown_priv: Y
          Process_priv: Y

在找到刚刚创建的用户:

*************************** 4. row ***************************
                  Host: 10.0.0.51
                  User: root
              Password: *23AE809DDACAF96AF0FD78ED04B6A265E05AA257
           Select_priv: N
           Insert_priv: N
           Update_priv: N
           Delete_priv: N
           Create_priv: N
             Drop_priv: N
           Reload_priv: N #<<--发现这里所有的权限都no
#所以在添加用户密码后必须更改权限

忘记root密码的解决方法

#关闭数据库
/etc/init.d/mysqld stop

#启动数据库
mysqld_safe --skip-grant-tables --skip-networking &

#进入mysql库
use mysql;

#修改root用户密码
mysql> update user set password=PASSWORD('123') where user='root' and host='localhost';

你可能感兴趣的:(MySQL数据库,MySQL数据库)