目录

误删root用户解决办法

方法1

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 1.关掉mysql服务
net stop mysql  # 此处为win环境 linux为service stop mysql;
# 2.用cmd用管理员的方式进入到mysql的安装路径下的bin,执行:
mysqld --console --skip-grant-tables --shared-memory # 保留该窗口
# 3.重开cmd,无密码进入mysql:
mysql -u root
# 4.修改数据库并给root用户添加权限
use mysql;
update user set select_priv=‘Y’,Insert_priv=‘Y’,Update_priv=‘Y’,Delete_priv=‘Y’,Create_priv=‘Y’,Drop_priv=‘Y’,Reload_priv=‘Y’,File_priv=‘Y’,Grant_priv=‘Y’,References_priv=‘Y’,Index_priv=‘Y’,Alter_priv=‘Y’,Show_db_priv=‘Y’,Super_priv=‘Y’,Create_tmp_table_priv=‘Y’,Lock_tables_priv=‘Y’,Execute_priv=‘Y’,Repl_slave_priv=‘Y’,Repl_client_priv=‘Y’,Create_view_priv=‘Y’,Show_view_priv=‘Y’,Create_routine_priv=‘Y’,Alter_routine_priv=‘Y’,Create_user_priv=‘Y’,Event_priv=‘Y’,Trigger_priv=‘Y’,Create_tablespace_priv=‘Y’
WHERE user=‘root’;
# 5.刷新并退出:
flush privileges;
exit;
# 6.重启数据库
net restart mysql; # Linux为service mysql restart;
# 7.无密码登录
mysql -u root -p  # 按[enter]在按[enter]  因为我们前面没有帮root用户设置密码,所有现在以root用户进入修改密码
# 8.修改密码
update user set password=password('123456')where user='root'; 
# 9.刷新用户权限并退出
flush privileges;
exit;
# 10.关闭步骤2中的mysqld

方法2

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 1.编辑vim /etc/my.cnf,添加最后一行skip-grant-tables那一行
# 可以考虑采用方法一中的步骤二
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
skip-grant-tables
# 2. 重启mysql服务
servie mysqld restart
# 3.直接输入mysql登陆mysql(不需要密码)
# 4.创建root用户
use mysql;
insert into user(User,Password) values('root',PASSWORD('123456'));
flush privileges; # (非常重要,要不然无法执行以下命令)
grant all privileges on mysql.* to root@localhost identified by '123456';
flush privileges; # (非常重要,要不然无法执行以下命令)
grant reload on *.* to 'root'@'localhost'; # (非常重要,要不然root没有相关的权限)
flush privileges;
quit
# 5.编辑vim /etc/my.cnf,去掉skip-grant-tables行
# 6.重启mysql服务
servie mysqld restart

方法3

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
# 1.首先在/etc/my.cnf文件中 mysqlID下面添加
skip-grant-tables # 用来跳过安全密码验证
# 2.在服务上重启mysql服务
systemctl restart mysqld.service
# 3.使用mysql直接进入mysql
mysql
# 4.使用mysql数据库
use mysql;
# 5.重新添加用户
insert into user(user,host,password,ssl_type,ssl_cipher,x509_issuer,x509_subject) values('root','localhost',PASSWORD('MyPass@123'),'','','','');
# 6. 刷新权限
flush privileges;
# 7.对新添加用户进行授权
grant all privileges on *.* to root@"localhost" identified by 'MyPass@123';
# 8.刷新权限
flush privileges;
# 9.退出mysql,在服务上的/etc/my.cnf文件上删除掉skip-grant-tables
# 重启mysql服务
vim /etc/my.cnf
systemctl restart mysqld.service