测试环境

  删除前

     mysql> select user,host,password from mysql.user;
+------+-----------+-------------------------------------------+
| user | host | password |
+------+-----------+-------------------------------------------+
| root | localhost | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| root | jinch | |
| root | 127.0.0.1 | |
| root | ::1 | |
| test | 10.0.0.% | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
    

删除root用户

 mysql> drop user root@'localhost';

为了测试,把其他root相关都删除了,命令就不一一展示了,显示结果。

   删除后

     mysql> select user,host from mysql.user;
+------+-----------+
| user | host |
+------+-----------+
| test | localhost |
+------+-----------+
1 row in set (0.00 sec)

退出再登陆

     [root@db01 ~]# mysql -uroot -p
Enter password:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

  现在已经无法登陆了,之前误删过一次。。。无奈那会儿不知道如何解决,就只能重装了,但是,经过一段时间的学习,发现并不是没有解决办法的。

解决方法

  

  首先,关闭数据库

service mysqld stop

用安全模式设置开启免密登陆

  

mysqld_safe --skip-grant-tables --skip-networking &

--skip-grant-tables  关闭连接层的验证模块
     --skip-networking    关闭远程连接数据库(只允许本地登陆,可设置防火墙达到相同效果)

[root@jinch ~]# mysqld_safe --skip-grant-tables
     181010 16:57:03 mysqld_safe Logging to '/usr/local/mysql/data/jinch.err'.
     181010 16:57:04 mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/data

  然后使用mysql命令就可以直接进入数据库
    进入之后,使用insert 命令重新插入表
     

 mysql> insert into user(user,host,password,ssl_type,ssl_cipher,x509_issuer,x509_subject) values('root','localhost',PASSWORD('123'),'','','','');
   

PASSWORD大写的原因:在mysql中密码都是密文的,所以这里是调用一个函数,将明文加密成密文。
    然后退出重启一下数据库就可以重新使用账号密码登录了

     mysql> quit
Bye
[root@db01 ~]# /etc/init.d/mysqld restart
[root@db01 ~]# mysql -uroot -p123
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
    

mysql>  --这边就放一部分啦,
  误删root用户无法登陆的解决就到这里啦

 

注意 如果成功后访问出现1142没有权限问题:

    

    mysql> select user,password from mysql.user;
ERROR 1142 (42000): SELECT command denied to user 'root'@'localhost' for table 'user'

看了一下报错信息,权限不够。。。那就是没有权限了
     退出数据库并且关闭mysql服务
     mysql> quit
     Bye
     安全模式启动mysql,root用户登录

     [root@db01 ~]# mysqld_safe --skip-grant-tables &
[root@db01 ~]# mysql -uroot -p123 mysql

  切换数据库&查看表信息中的root用户的localhost权限

 mysql> use mysql;
Database changed
mysql> show tables;
+---------------------------+
| Tables_in_mysql |
+---------------------------+
| columns_priv |
| db |
| event |
| func |
| general_log |
| help_category |
| help_keyword |
| help_relation |
| help_topic |
| innodb_index_stats |
| innodb_table_stats |
| ndb_binlog_index |
| plugin |
| proc |
| procs_priv |
| proxies_priv |
| servers |
| slave_master_info |
| slave_relay_log_info |
| slave_worker_info |
| slow_log |
| tables_priv |
| time_zone |
| time_zone_leap_second |
| time_zone_name |
| time_zone_transition |
| time_zone_transition_type |
| user |
+---------------------------+
28 rows in set (0.00 sec) mysql> select * from user where user='root' and host='localhost'\G;
*************************** 1. row ***************************
Host: localhost
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
Shutdown_priv: N
Process_priv: N
File_priv: N
Grant_priv: N
References_priv: N
Index_priv: N
Alter_priv: N
Show_db_priv: N
Super_priv: N
Create_tmp_table_priv: N
Lock_tables_priv: N
Execute_priv: N
Repl_slave_priv: N
Repl_client_priv: N
Create_view_priv: N
Show_view_priv: N
Create_routine_priv: N
Alter_routine_priv: N
Create_user_priv: N
Event_priv: N
Trigger_priv: N
Create_tablespace_priv: N
ssl_type:
ssl_cipher:
x509_issuer:
x509_subject:
max_questions: 0
max_updates: 0
max_connections: 0
max_user_connections: 0
plugin: mysql_native_password
authentication_string: NULL
password_expired: N
1 row in set (0.00 sec) ERROR:
No query specified

这里发现全部都是N ,表示root用户本地登陆没有权限
 修改root用户的localhost权限
    01.

update mysql.user set Grant_priv='Y',Super_priv='Y' where user='root';

flush privileges;

grant all on *.* to 'root'@'localhost';

下面这写行不用输入,上面命令的实质就是下面 的操作

mysql> update user set `Insert_priv` ='Y' where user='root' and host='localhost';

     mysql> update user set `Update_priv` ='Y' where user='root' and host='localhost';

     mysql> update user set `Delete_priv` ='Y' where user='root' and host='localhost';

     mysql> update user set `Create_priv` ='Y' where user='root' and host='localhost';

     mysql> update user set `Drop_priv` ='Y' where user='root' and host='localhost';

     mysql> update user set `Reload_priv` ='Y' where user='root' and host='localhost';

     mysql> update user set `Shutdown_priv` ='Y' where user='root' and host='localhost';

     mysql> update user set `Process_priv` ='Y' where user='root' and host='localhost';

     mysql> update user set `File_priv` ='Y' where user='root' and host='localhost';

     mysql> update user set `Grant_priv` ='Y' where user='root' and host='localhost';

     mysql> update user set `References_priv` ='Y' where user='root' and host='localhost';

     mysql> update user set `Index_priv` ='Y' where user='root' and host='localhost';

     mysql> update user set `Alter_priv` ='Y' where user='root' and host='localhost';

     mysql> update user set `Show_db_priv` ='Y' where user='root' and host='localhost';

     mysql> update user set `Super_priv` ='Y',`Create_tmp_table_priv` = 'Y' where user='root'' and host='localhost';

     mysql> update user set `Lock_tables_priv` ='Y' where user='root' and host='localhost';  

     mysql> update user set `Execute_priv` ='Y' where user='root' and host='localhost';

     mysql> update user set `Repl_slave_priv` ='Y' where user='root' and host='localhost';

     mysql> update user set `Repl_client_priv` ='Y' where user='root' and host='localhost';

     mysql> update user set `Create_view_priv` ='Y' where user='root' and host='localhost';

     mysql> update user set `Show_view_priv` ='Y' where user='root' and host='localhost';

     mysql> update user set `Create_routine_priv` ='Y' where user='root' and host='localhost'';

     mysql> update user set `Alter_routine_priv` ='Y' where user='root' and host='localhost';

     mysql> update user set `Create_user_priv` ='Y' where user='root' and host='localhost';

     mysql> update user set `Event_priv` ='Y' where user='root' and host='localhost';

     mysql> update user set `Trigger_priv` ='Y' where user='root' and host='localhost';

     mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

退出&重启&登陆

     mysql> quit
Bye
[root@jinch ~]# /etc/init.d/mysqld restart
Shutting down MySQL.. SUCCESS!
Starting MySQL.. SUCCESS!
[root@jinch ~]# mysql -uroot -p123

切换库

     mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A Database changed

#####  查看表信息

   mysql> select * from 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
Shutdown_priv: Y
Process_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: N
ssl_type:
ssl_cipher:
x509_issuer:
x509_subject:
max_questions: 0
max_updates: 0
max_connections: 0
max_user_connections: 0
plugin: mysql_native_password
authentication_string: NULL
password_expired: N
1 row in set (0.01 sec) ERROR:
No query specified

权限已经基本都有了
测试一下

mysql> create database jinc;
Query OK, 1 row affected (0.00 sec) mysql> select user,host from mysql.user;
+------+-----------+
| user | host |
+------+-----------+
| root | localhost |
+------+-----------+
1 row in set (0.00 sec) mysql> drop database jinc;
Query OK, 0 rows affected (0.00 sec)

MySQL误删root用户导致无法登陆解决方法的更多相关文章

  1. mysql误删root用户或者忘记root密码解决方法

    解决方法一: 到其他安装了Mysql的服务器(前提是要知道该服务器上Mysql的root用户密 码),打开[Mysql的安装目录/var/mysql],将其中的user.frm.user.MYD.us ...

  2. mysql误删root用户

    在操作mysql时误删除root用户,如何进行恢复 在安装hive时候误删除root用户,存在的用户没有权限,解决方法如下. 1.首先在/etc/my.cnf文件中 mysqlID下面添加 skip- ...

  3. 无法给MySQL root用户修改密码的解决方法

    本人编译安装完MySQL数据库,想给root用户修改密码,结果无法修改,并且报错,报错大概信息如下: mysqladmin: connect to server at 'localhost' fail ...

  4. MySQL使用root用户授权出现错误ERROR 1045 (28000) at line 2: Access denied for user 'root'@'%' (using password: YES)解决办法

    参考:https://blog.csdn.net/open_data/article/details/42873827 使用MySQL的root用户登录出现错误提示 ERROR 1045 (28000 ...

  5. MysqL的root用户不允许远程连接

    原文:MysqL的root用户不允许远程连接 今天程序报了异常:java.sql.SQLException: Access denied for user 'root'@'RJB-Z' (using ...

  6. 第三篇 ubuntu下,mysql 的root用户密码忘了怎么办?

    好长一段时间没有使用ubuntu了,今天进来玩玩,结果连mysql的root用户密码都忘记了.就上网找了一下,发现如下解决办法,试了一下,可行!记录在此,环境问题,是需要注意的. Ubuntu Ser ...

  7. mysql的root用户被删除, MySQL 服务无法启动 1067错误

    本文出现的问题有: 1, root(localhost) 用户被删除; 2, 在关闭mysql服务过后, 无法启动,出现1067错误; 我使用的mysql版本为5.6; mysql的安装路径: C:\ ...

  8. yum安装mysql后root用户的临时密码

    1.查看root用户临时随机密码 yum 安装mysql后,无法通过空密码登录数据库,如下: [root@ mysql]# mysql -u root -p Enter password: ERROR ...

  9. MySQL重置root用户密码的方法

    本教程适用于采用Win2003.WinXP操作系统的迅美VPS和云主机产品. 当管理员忘记MySQL密码怎么办?屡次输入密码,仍然提示错误,网站无法正常运行,数据库也无法管理,管理员束手无策. 网站程 ...

随机推荐

  1. ajax 跨域名调用

    在ajax 中要跨域名 请求的时候要注意 1. dataType: 'jsonp', 2. jsonp: 'callback', <script type="text/javascri ...

  2. HTML5+CSS3网站设计教程 (张晓景,胡克) [iso]

    <HTML5+CSS3网站设计教程>系统地讲解了CSS的基础理论和实际运用技术,并结合多个案例讲解了采用CSS与层布局相结合制作网页的方法,在详细讲解各个案例的制作中,不仅介绍了CSS样式 ...

  3. SharePoint 2013备份方法整理

    关于SharePoint备份 SharePoint的备份是一个数据副本,主要用于在系统出现故障后还原和恢复该数据. 备份的工具主要有以下几种(写的不全,欢迎补充.) SharePoint管理中心的备份 ...

  4. Ubuntu配置ip和dns后还是不能访问外网

    https://blog.csdn.net/WFping518/article/details/81011722

  5. 快速下载android源码

    众所周知的原因,android源码被墙了,还好国内有不少镜像,这里使用清华提供的镜像. 以下内容转自: https://wiki.tuna.tsinghua.edu.cn/MirrorUsage/an ...

  6. 为什么 kubernetes 天然适合微服务 (1)

    此文已由作者刘超授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验 最近总在思考,为什么在支撑容器平台和微服务的竞争中,Kubernetes 会取得最终的胜出,事实上从很多角度出发 ...

  7. 为openstack服务使能debug模式

    Most OpenStack services use the same configuration options to enable the debug logging that is also ...

  8. IT职场中外企面试最爱提的问题

    1.请介绍一下你自己. 这是外企常问的问题.一般人回答这个问题过于平常,只说姓名.年龄.爱好.工作经验,这些在简历上都有,其实,外企最希望知道的是求职者能否胜任工作,包括:最强的技能.最深入研究的知识 ...

  9. 题解 P1534 【不高兴的津津(升级版)】

    题目链接 不算太难.就是题目有歧义. wa了好几次才发现.上一天要是小于8的话.结算是昨天一个负值在加上今天课时数.再减去8.233.... 而不是上一天小于8个小时.就清零了..大家要注意(ps:题 ...

  10. C语言实现数组及链表的快速排序

    1. 数组快排: 方法一: #include <stdio.h> #include <stdlib.h> //交换 void swap(int *pi, int *pj) { ...