MySQL 有意思的权限报错

文若2年前技术文章657

前言

今天遇到了一个报错,觉得挺有意思的,在此记录下。

SELECT command denied to user 'xxx'@'xxx' for table 'xxx'

1. 报错原因

这里是研发提了一条修改视图的 SQL,说报权限问题,当时就觉得很定是 DEFINER 定义者和修改视图的账号不一样,且没有 super 权限。 就让他去找视图定义账号去手动执行下。

ALTER VIEW

此时研发表示不知道是谁创建的视图,我就帮他去看了下,发现视图的创建者和审核平台的用户名一样,那说明审核平台是有权限执行这条 SQL 的。然后查了下报错:

ERROR:SELECT command denied to user 'xxx'@'xxx' for table 'xxx'

没有这张表的权限,审核平台有整个库所有的权限呀,很奇怪,于是就去查看了下视图的 SQL,发现 db_name.table_name 视图里面有其他库的信息。而且这个库名,数据库中不存在。那这个报错就有点抽象,随后测试了下。

创建一个只读用户:

root@mysql 10:53:  [(none)]>grant select on op_service_db.* to test1@'%' identified by '123';

use 一个存在的库,但是用户没有权限:

test1@mysql 10:53:  [(none)]>use op_bak;
ERROR 1044 (42000): Access denied for user 'test1'@'%' to database 'op_bak'

use 一个不存在的库:

test1@mysql 10:53:  [(none)]>use owqdwqd;
ERROR 1044 (42000): Access denied for user 'test1'@'%' to database 'owqdwqd'

无论数据库是否存在,都报没有权限,挺抽象的,SQL 是研发从 test 环境直接复制的,没有改库信息。

后记

如果遇到此类报错,最好先根据报错内容,查看下 SQL 语句,多数情况下,答案就在 SQL 里面。还有就是要注意 MySQL 权限这里,即使不存在的库,在此类场景下,也报权限不足,除非你的账号拥有 super 权限。


相关文章

Atlas集成HBase

Atlas集成HBase

1 集成原理 Atlas HBase hook与HBase master注册为协处理器。在检测到对HBase名称空间/表/列族的更改时, Atlas Hook过Kafka通知更新Atlas中的元数据。...

pgbench 压测工具

pgbench 压测工具

一、基本参数pgbench工具是Postgres自带的一款轻量型基准压测工具。它自定义相关场景下脚本进行1.1 初始化参数参数含义-i / --initialize调用初始化模式-I init_ste...

Spark调优方式

(1)资源参数调优num-executors:设置Spark作业总共要用多少个Executor进程来执行executor-memory:设置每个Executor进程的内存executor-cores:...

chengying-4.0登入接口逆向

chengying-4.0登入接口逆向

首先是登入的加密url:http://xxxxx/api/v2/user/login参数1. username:admin@dtstack.com2. password:614bb9438210c69...

hive执行count和spark执行count结果不一致

hive执行count和spark执行count结果不一致

【组件版本】hive on mr、spark【问题现象】hive 执行count语句,结果条数为0,spark执行count语句能正常显示count数【详细描述】hive 执行count语句:显示co...

开源大数据集群部署(二十一)Spark on yarn 部署

开源大数据集群部署(二十一)Spark on yarn 部署

3.0.1 spark on yarn安装(每个节点) cd /root/bigdata/ tar -xzvf spark-3.3.1-bin-hadoop3.tgz -C /opt/ ln -s...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。