1142 - SELECT command denied to user ‘root‘@‘localhost‘ for table ‘user‘

Posted 遇见Time

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1142 - SELECT command denied to user ‘root‘@‘localhost‘ for table ‘user‘相关的知识,希望对你有一定的参考价值。

报错信息:
在这里插入图片描述
问题分析:
用户权限不足,需要分配其一定的权限。
解决办法
(1)找到my.ini并打开,在mysqld下面加上一行"skip-grant-tables"(部分操作会受到限制)(方法二:打开cmd命令提示符,进入mysql.exe所在的文件夹。输入命令 mysqld --skip-grant-tables 回车,此时就跳过了mysql的用户验证。)
在这里插入图片描述
(2)重启mysql服务
(3)修改权限
①直接输入mysql,不需要带任何登录参数直接回车就可以登陆上数据库。
在这里插入图片描述
②输入show databases; 可以看到所有数据库说明成功登陆。
在这里插入图片描述
③其中mysql库就是保存用户名的地方。输入 use mysql; 选择mysql数据库。show tables查看所有表,会发现有个user表,这里存放的就是用户名,密码,权限等等账户信息。
在这里插入图片描述
④输入select * from user where user=‘root’ and host=‘localhost’ 来查看用户信息。在显示的列表中显示:root用户的localhost的权限都是’N’,表示root用户本地登陆不具有权限
在这里插入图片描述
⑤输入以下命令,修改权限

update user set `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', `Super_priv` = 'Y',`Show_db_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' and host='localhost';

结果如下,
在这里插入图片描述
OK,问题解决!(记得将在my.ini加的一行代码去掉,然后重启mysql才算完成!)

以上是关于1142 - SELECT command denied to user ‘root‘@‘localhost‘ for table ‘user‘的主要内容,如果未能解决你的问题,请参考以下文章

ERROR 1142 (42000): GRANT command denied to user ** 或 ERROR 1045 (28000): Access denied for user 

错误 1142:SELECT 和 LOCK TABLE 命令被拒绝

MySQL 错误:#1142 - SELECT 命令拒绝用户

MariaDB 10.2.6 上的“带有递归”语句的“错误 1142(42000):SELECT 命令被拒绝”

从服务器检索数据到本地返回 SQLSTATE[42000]:语法错误或访问冲突:1142 SELECT 命令拒绝用户

转: MySQL5.7 ERROR 1142 (42000)问题