Navicat mysql报错 1142 – SELECT command denied to user ‘xxx‘@‘localhost‘ for table ‘user‘
话我就撂这儿了,只要你认真看完,你就能解决。
—
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,输入命令。
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
相关文章
- MySQL Error number: 3081; Symbol: ER_SLAVE_CHANNEL_MUST_STOP; SQLSTATE: HY000 报错 故障修复 远程处理
- MySQL Error number: 3156; Symbol: ER_INVALID_JSON_VALUE_FOR_CAST; SQLSTATE: 22018 报错 故障修复 远程处理
- MySQL Error number: MY-010532; Symbol: ER_RPL_SLAVE_CANT_STOP_SLAVE_FOR_CHANNEL; SQLSTATE: HY000 报错 故障修复 远程处理
- MySQL Error number: MY-010573; Symbol: ER_RPL_ERROR_LOOKING_FOR_LOG; SQLSTATE: HY000 报错 故障修复 远程处理
- MySQL Error number: MY-010805; Symbol: ER_EVENT_CANT_GET_LOCK_FOR_DROPPING_EVENT; SQLSTATE: HY000 报错 故障修复 远程处理
- MySQL Error number: MY-010936; Symbol: ER_INVALID_COLLATION_FOR_CHARSET; SQLSTATE: HY000 报错 故障修复 远程处理
- MySQL Error number: MY-011667; Symbol: ER_GRP_RPL_FAILED_TO_GENERATE_SIDNO_FOR_GRP; SQLSTATE: HY000 报错 故障修复 远程处理
- MySQL Error number: MY-012534; Symbol: ER_IB_MSG_709; SQLSTATE: HY000 报错 故障修复 远程处理
- 的性能MySQL优化:增强%性能的技巧(mysql增加)
- MySQL筛选技术:从数据中发掘最深层次的知识(mysql筛选数据)
- MySQL中转换字符串函数使用指南(mysql转字符串函数)
- MySQL密码生成之路(mysql密码生成)
- MySQL数据源配置指南(mysql数据源配置)
- MySQL的RPM安装包,快速方便的安装MySQL!(mysql的rpm)
- MySQL中HEX函数的用法及示例(mysql 中hex函数)
- MySQL数据库如何修复1005错误(mysql中1005报错)
- ASP 操作简单,快速修改MySQL数据库(asp修改mysql)
- MySQL中PSC格式数据的导入(.psc导入到mysql)
- MySQL 单条记录容量大小如何计算(mysql 一条记录大小)
- 解决方法MySQL下载时的报错(mysql下载报错)
- MySQL插入单引号报错解决方法(mysql不能插入单引号)