mysql使用报错1142(42000)的问题及解决

 更新时间:2023年08月30日 09:14:12   作者:Ahri-情书  
这篇文章主要介绍了mysql使用报错1142(42000)的问题及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

mysql使用报错1142(42000)

在学习mysql的时候,一顿蜜汁操作,再次使用mysql的时候发现,不管用啥子命令,都出现了一个报错

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

看了一下报错信息,权限不够。。。

那就是没有权限了,so,给他权限就好了

step01

退出数据库并且关闭mysql服务

 mysql> quit
 Bye
 [root@jinch ~]# /etc/init.d/mysqld stop
 Shutting down MySQL.. SUCCESS! 

step02

安全模式启动mysql,root用户登录

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

step03

切换数据库&查看表信息中的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用户本地登陆没有权限

step04

修改root用户的localhost权限(两种写法)

写法1:

mysql> update mysql.user set Grant_priv='Y',Super_priv='Y' where user='root';
mysql> flush privileges;
mysql>grant all on *.* to 'root'@'localhost';

写法2:

 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)

我这里有点傻。。。自己一个一个敲了一遍,可以直接用‘,’ 分割一次写完的,,,

step05

退出&重启&登陆

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

step06

切换库

 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

step07

查看表信息

 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)

好了,基本的权限又回来了

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Django+mysql配置与简单操作数据库实例代码

    Django+mysql配置与简单操作数据库实例代码

    这篇文章主要介绍了Django+mysql配置与简单操作数据库实例,需要的朋友可以参考下
    2017-07-07
  • 关于MySQL 大批量插入时如何过滤掉重复数据

    关于MySQL 大批量插入时如何过滤掉重复数据

    这篇文章主要介绍关于MySQL 大批量插入时如何过滤重复数据,比如线上库有6个表存在重复数据,其中2个表比较大,96万+和30万+,因为之前处理过相同的问题,就直接拿来了上次的Python去重脚本,脚本很简单,就是连接数据库,查出来重复数据,循环删除,需要的朋友可以参考下
    2021-09-09
  • MySQL启动报错:InnoDB表空间丢失的问题排查与解决方案

    MySQL启动报错:InnoDB表空间丢失的问题排查与解决方案

    在MySQL数据库的日常运维中,InnoDB表空间丢失是一个较为常见的问题,本文将深入分析该问题的原因,并提供详细的解决方法和预防措施,希望对大家有所帮助
    2025-07-07
  • mysql 8.0.15 安装图文教程及数据库基础

    mysql 8.0.15 安装图文教程及数据库基础

    这篇文章主要为大家详细介绍了mysql 8.0.15 安装方法图文教程,及数据库基础知识,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-03-03
  • Mysql字符串截取及获取指定字符串中的数据

    Mysql字符串截取及获取指定字符串中的数据

    小编童鞋最近接了一个新需求,需要在MySql的字段中截取一段字符串中的特定字符,下面小编把我的核心代码分享给大家,对mysql 字符串截取相关知识感兴趣的朋友一起看看吧
    2019-11-11
  • MySql超详细讲解表的用法

    MySql超详细讲解表的用法

    这篇文章主要为大家详细介绍了MySQL数据库中表常用的一些操作方法,文中的示例代码讲解详细, 对我们学习MySQL有一定帮助,需要的可以参考一下
    2022-09-09
  • Linux服务上MySQL启动、重启和关闭的操作方法

    Linux服务上MySQL启动、重启和关闭的操作方法

    MySQL是一种广泛使用的开源关系型数据库管理系统,常用于各种规模的应用程序中,在Linux服务器上管理MySQL服务是一个基本的运维任务,本文将详细介绍如何在Linux系统上启动、重启和关闭MySQL服务,涵盖不同Linux发行版(如Ubuntu和CentOS)的操作方法
    2024-11-11
  • MySQL学习第二天 安装和配置mysql winx64

    MySQL学习第二天 安装和配置mysql winx64

    MySQL学习第二天,主要为大家详细介绍了在Windows 64位操作系统下安装和配置MySQL的具体步骤,整理一份mysql winx64安装配置方法教程,感兴趣的小伙伴们可以参考一下
    2016-05-05
  • MySQL开启远程访问权限的完整步骤记录

    MySQL开启远程访问权限的完整步骤记录

    MySQL是常用的关系型数据库,默认仅支持本地访问,若需更灵活管理,可通过远程连接突破限制,实现跨主机操作,这篇文章主要介绍了MySQL开启远程访问权限的完整步骤,需要的朋友可以参考下
    2025-06-06
  • mysql 中的备份恢复,分区分表,主从复制,读写分离

    mysql 中的备份恢复,分区分表,主从复制,读写分离

    这篇文章主要介绍了mysql 中的备份恢复,分区分表,主从复制,读写分离,文章围绕主题展开详细的内容戒杀,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-09-09

最新评论