博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MySQL案例-show fileds from 提示无权限
阅读量:7066 次
发布时间:2019-06-28

本文共 1748 字,大约阅读时间需要 5 分钟。

-------------------------------------------------------------------------------------------------正文---------------------------------------------------------------------------------------------------------------
背景:
MySQL-5.7.12, 开发用的环境出现show fields的报错;
场景:
业务方反馈在执行show fields的命令时报错了,
在测试环境构造了报错的场景, 实际报错内容类似于:

点击(此处)折叠或打开

  1. ERROR 1143 (42000): SELECT command denied to user ''@'%' for column 'role_id' in table 'xxxxx'
直观上看, 很容易就能发现是权限的问题,
不过有一个疑点:
报错内容的用户那一栏显示为空;
分析:
首先能肯定的是这是由权限引起的, 错误信息中很明显;
第二点就是用户栏显示为空, 这个有可能是指用户不存在, 也有可能是有关联的用户信息存在一些问题,导致无法显示;
排查:
1.排查登录用户的权限, 登录到线上环境, 发现业务账号确实会报错, 然后换成root账号也是一样......
而业务账号是有view对应db, 以及view 的select中对应db的ALL权限的, 何况root也不行, 说明这个权限相关的报错, 并不是由登录用户引起的;
2.既然不是登录用户的权限问题, 那么就看看视图本身的权限;
------------------------------------------------------------------------------------------------------------------------------------------------------------------
相关资料:
MySQL-5.7中, 视图的权限控制是由视图创建时自行指定的, 如测试环境中, 有问题的视图的创建语句:

点击(此处)折叠或打开

  1. CREATE ALGORITHM=UNDEFINED DEFINER=`test`@`%` SQL SECURITY DEFINER VIEW test_view_xxx_roles AS select xxx;
红色部分:
定义了这个view的创建者(定义者),
代表了这个view在创建时用到的权限是
`test`@`%`提供的;
绿色部分:
定义了这个view在访问的时候, 校验权限时, 检查哪个用户, DEFINER或者是INVOKER;
------------------------------------------------------------------------------------------------------------------------------------------------------------------
从相关资料可以了解到, show fields from view_stack会报无权限的错误, 就是因为根据
SQL SECURITY
去校验用户的权限时, 发现权限没了;
从view的内容来看, 只需要对应库的select权限就好了, 那么看看现在库中, 创建这个view的test用户的权限:
是的, 真的没有看错, 开发用的环境里面, 这个view对应的用户已经没了....._(:з」∠)_
那么创建这个用户以后, 看看是不是就不会报错了:
果然, 只要加上这个definer就不会再报错了;
处理方式:
最终的处理方式是修改了相关view的definer用户(需要
super权限才能修改view的这个字段);
重要的额外信息:
比较奇怪的是这个现象无法在"干净
"的库里面复现, 只有把开发环境的
数据库导入到测试环境才会出现这个问题, 可能有一些其他的因素影响到了mysql的处理逻辑;

转载地址:http://daall.baihongyu.com/

你可能感兴趣的文章
Ruby 2.4.6 发布,终止 Ruby 2.4 正常维护
查看>>
Python 学习(六)
查看>>
Spring Data JPA开发手册——1.介绍
查看>>
NG-ZORRO 7.1.0 发布,Ant Design 的 Angular 实现
查看>>
jQuery图片垂直滚动焦点图
查看>>
使用镜像搭建WordPress网站过程
查看>>
【对讲机的那点事】你了解TETRA数字集群通信系统组网的模式吗?
查看>>
【问答集锦】技术与运营的多面手赵亚飞,内存溢出怎么处理?
查看>>
jQuery选择器总结
查看>>
阿里最全面试116题:阿里天猫、蚂蚁金服、阿里巴巴面试题含答案
查看>>
elasticsearch的score相关资料(整理)
查看>>
SQL Tune Report–sqltrpt.sql
查看>>
Cobbler
查看>>
PostgreSQL 10.1 手册_部分 II. SQL 语言_第 5 章 数据定义_5.1. 表基础
查看>>
直播软件开发VS短视频软件开发,未来发展趋势
查看>>
拜托!面试请不要再问我Spring Cloud底层原理
查看>>
用Microsoft.Solver.Foundation进行线性规划,为WPF应用添加智能
查看>>
Python数据可视化的四种简易方法
查看>>
win10局域网共享打印机
查看>>
业界 | Dropbox力荐!我们如何应对Python桌面应用程序的崩溃
查看>>