前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Navicat mysql报错 1142 – SELECT command denied to user ‘xxx‘@‘localhost‘ for table ‘user‘

Navicat mysql报错 1142 – SELECT command denied to user ‘xxx‘@‘localhost‘ for table ‘user‘

作者头像
全栈程序员站长
发布2022-11-10 15:07:04
3.2K0
发布2022-11-10 15:07:04
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

话我就撂这儿了,只要你认真看完,你就能解决。

2022年4月20日 阅读量都已经19586次了

重新看了一下这一篇解决方案,感觉写的还是有点冗长的,

​​​​​​​一句话总结就是:登录root账户,给你的子账户赋权。

困了我一天一夜的问题终于解决了,问题也不知道是怎么产生的,点击“用户”或者修改“information_schema”的值就会提示错误,似乎是因为权限不足,错误入下图。

首先你要知道数据库的用户是怎么回事。每个数据库都有账号密码,连接特定的数据库需要对应的账号密码,这个很容易理解,PHP里的mysqli_connect你们也用的多了。主机上的MYSQL可以有很多个数据库,这个MYSQL有一个root账户,这个账户可以随意操作其他数据库账户的权限。“information_schema”这个数据库需要比较大的权限才能修改,不然只能只读。root账户自然是可以操作“information_schema”的,Event_Scheduler就需要root账户开启。

这里的问题就在于user1的权限不足,我们就需要用root赋予user1更大的权限。

那么root账号是啥,密码又是啥?

(环境说明)我搭建的环境:在自己的台式主机上直接安装的宝塔软件,然后选择的5.5版本的mysql安装。安装的时候会提示输入数据库的密码,这里填入的是root密码。之后会用到,不是从宝塔安装的小伙伴们也别忘了自己mysql的root密码,密码忘了可以重装(或者点下边那个“密码”按钮强制修改)。

这里连接sql_dora数据库用的账号是sql_dora,密码是pwd1.

需要说明的是这个账号,它是没有大权限的。而root这个用户名才是有真正大权限的,它的密码是创建数据库时你输入的那个。

对了,那怎么验证你的root账号的密码是否正确呢?

CMD法(建议跳过,看下一个Navicat法):

1.找到你的MYSQL安装目录

2.打开CMD,输入命令。

代码语言:javascript
复制
Microsoft Windows [版本 10.0.17134.885]
(c) 2018 Microsoft Corporation。保留所有权利。
//切换到D盘盘符
C:\Users\Administrator>D:
//切换到MYSQL目录下,目录获取方法请看上一步骤
D:\>cd D:\BtSoft\WebSoft\mysql\MySQL5.5\bin
//用root登陆MYSQL,指令:mysql -hlocalhost -uroot -p密码
D:\BtSoft\WebSoft\mysql\MySQL5.5\bin>mysql -hlocalhost -uroot -p123456
//登陆成功后的返回
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 672
Server version: 5.5.54-log MySQL Community Server (GPL)
Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
//不清楚这是干啥的(滑稽
mysql> use mysql
Database changed
//输出用户名为sql_dora的信息
mysql> select * from user where user='sql_dora';
+-----------+----------+-------------------------------------------+-------------+-------------+-------------+-------------+-------------+-----------+-------------+---------------+--------------+-----------+------------+-----------------+------------+------------+--------------+------------+-----------------------+------------------+--------------+-----------------+------------------+------------------+----------------+---------------------+--------------------+------------------+------------+--------------+------------------------+----------+------------+-------------+--------------+---------------+-------------+-----------------+----------------------+--------+-----------------------+
| Host      | User     | Password                                  | Select_priv | Insert_priv | Update_priv | Delete_priv | Create_priv | Drop_priv | Reload_priv | Shutdown_priv | Process_priv | File_priv | Grant_priv | References_priv | Index_priv | Alter_priv | Show_db_priv | Super_priv | Create_tmp_table_priv | Lock_tables_priv | Execute_priv | Repl_slave_priv | Repl_client_priv | Create_view_priv | Show_view_priv | Create_routine_priv | Alter_routine_priv | Create_user_priv | Event_priv | Trigger_priv | Create_tablespace_priv | ssl_type | ssl_cipher | x509_issuer | x509_subject | max_questions | max_updates | max_connections | max_user_connections | plugin | authentication_string |
+-----------+----------+-------------------------------------------+-------------+-------------+-------------+-------------+-------------+-----------+-------------+---------------+--------------+-----------+------------+-----------------+------------+------------+--------------+------------+-----------------------+------------------+--------------+-----------------+------------------+------------------+----------------+---------------------+--------------------+------------------+------------+--------------+------------------------+----------+------------+-------------+--------------+---------------+-------------+-----------------+----------------------+--------+-----------------------+
| 127.0.0.1 | sql_dora | *CBC40DD3286B5BBB6F9F3582C7760D52524ABC16 | N           | N           | N           | N           | N           | N         | N           | N             | N            | N         | N          | N               | N          | N          | N            | N          | N                     | N                | N            | N               | N                | N                | N              | N                   | N                  | N                | N          | N            | N                      |          |            |             |              |             0 |           0 |               0 |                    0 |        | NULL                  |
+-----------+----------+-------------------------------------------+-------------+-------------+-------------+-------------+-------------+-----------+-------------+---------------+--------------+-----------+------------+-----------------+------------+------------+--------------+------------+-----------------------+------------------+--------------+-----------------+------------------+------------------+----------------+---------------------+--------------------+------------------+------------+--------------+------------------------+----------+------------+-------------+--------------+---------------+-------------+-----------------+----------------------+--------+-----------------------+
1 row in set (0.00 sec)
mysql>

当然,执行到第三步就行了,我们只测试root密码是不是对的。

Navicat法:

如下图,用户名填写root,密码填入,测试连接就行了。(我也是写完CMD法之后突然想起有这么个直接测试的…)

用root账户登录之后我们就获得了最高权限,接下来给我们的sql_dora用户赋权。

下图是点击“用户”就会提示1142错误的默认权限情况。

勾选上Select之后,保存。再打开数据库,以sql_dora之名,你会发现Select错误就不会再出来了!

如果需要其他权限,请适当勾选,权限过多不太好,哪天MYSQL被注入了,drop你的库你就傻眼了。

(最后,最后,最后)

我发现一个很严肃的问题,直接用root账号操作不就好了,干嘛还得麻烦给sql_dora赋权。

等等,好像是有那么个必要的,毕竟PHP连接数据库不能用root啊,风险太高。Navicat私下root还行,上PHP最好还是给小账户赋权一下,用小账户,把风险降到最低。

就写到这里过了,给莫名其妙出了问题的小伙伴们参考参考。经过这么一搞,自己对之前模模糊糊的MYSQL用户机制有了那么个头绪,至少没那么头大了。

看完了我的文章,你的问题应该解决了,点个赞再走呗~

啥?你说啥?你还想关注我?那好吧,我接受了!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/186977.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年10月1日 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
访问管理
访问管理(Cloud Access Management,CAM)可以帮助您安全、便捷地管理对腾讯云服务和资源的访问。您可以使用CAM创建子用户、用户组和角色,并通过策略控制其访问范围。CAM支持用户和角色SSO能力,您可以根据具体管理场景针对性设置企业内用户和腾讯云的互通能力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档