MySQL案例-show fileds from 提示无权限

-------------------------------------------------------------------------------------------------正文---------------------------------------------------------------------------------------------------------------

背景:
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的处理逻辑;

时间: 2024-08-01 17:01:47

MySQL案例-show fileds from 提示无权限的相关文章

用管理员帐号新建了一个未知类型的文件(test.bdsgroup) 删除时提示无权限

问题描述 用管理员帐号新建了一个未知类型的文件(test.bdsgroup) 删除时提示无权限 解决方案 右键属性里面找到安全,看里面是否有你的权限 解决方案二: 右键获取超级管理员权限,或者进入安全模式删除 解决方案三: 用光盘或者U盘进windowsPE去删吧

mysql-win7系统安装 VC++时候提示无权限操作dll文件?

问题描述 win7系统安装 VC++时候提示无权限操作dll文件? 微软官网下载的,先是普通用户登录的,先安装2012版的提示无权限操作dll文件,启用administrator用户,安装还是提示无权限!下个2015版的什么都不提示到最后来个安装失败!谁指导一下,我想装wampserver,总是提示缺少dll文件? 解决方案 Windows 7 完美安装 Visual C++ 6.0 http://download.csdn.net/detail/caozhy/7820407 其中VC++下载安

spring+cxf 返回json格式, 提示无权限

问题描述 spring+cxf 返回json格式, 提示无权限 配置了cxf 权限拦截 如下代码 public void handleMessage(SoapMessage soap) throws Fault { LOGGER.info("-->开始验证用户信息"); OutputStream os = soap.getContent(OutputStream.class); List<Header> headers = soap.getHeaders(); //S

JS 提示无权限的问题,谁帮我看看?

问题描述 varSimple=window.Simple=window.$=function(a){returndocument.getElementById(a)};$.cookie={get:function(a){a=document.cookie.match(RegExp("(^|)"+a+"=([^;]*)(;|$)"));return!a?"":decodeURIComponent(a[2])},set:function(a,b,c,

win8相机应用提示无权限怎么办?

  1.打开win8开始界面的相机应用,出现提示权限的时候我们不必理会,直接把鼠标放到屏幕的右上角,调出设置选项菜单,选择设置 2.在设置选项中我们找到权限并打开,这时候我们会发现摄像头和麦克风的权限是关闭的,只有权利使用图片库,我们知道把权限开启即可,稍后重启应用即可恢复正常.

win7删文件夹时提示无权限 解决方法

原文:http://zhidao.baidu.com/question/242757492.html 最简单的删除方法不用提升权限. 右键 C盘-属性-磁盘清理 选择"以前的 Windows 安装"单击确定 删除即可 . 或者1. 单击「开始」按钮,在搜索框中键入"磁盘清理",然后单击"磁盘清理".(如果系统提示您选择驱动器,请选择刚刚安装了 Windows 的驱动器,然后单击"下一步".) 2. 单击"清理系统文件

Centos下构建Nagios监控平台提示无权限访问nagios

今天在搭建Nagios监控平台时,发现正常配置完成后,首先无法打开apache默认页面,其次报"You don' t have permission to access /nagios/ on this server",由于刚刚开始搞Linux ,也不是太熟悉,而且 Nagios也是刚开始学习怎么搭,所以在搭建时有时经常会遇到莫名其妙的问题,但是当时非常奇怪,和之前的 两个监控平台的配置和安装方法一样,怎么会报这种错误呢? 没办法,推倒重新搭整个服务器?好像 这个不是个好方法,最好的方

如何解决Win8删除文件时提示无权限问题

  具体的操作步骤如下: 1.首先打开命令提示符(管理员),我们可以使用WIN+X调出功能菜单然后选择; 2.首先我们使用"CD 文件夹" 这样的命令来到需要删除文件的目录,然后先尝试使用最平常的DEL 命令来删除文件; 3.使用DEL删除无效后,再使用 "RD 文件夹名"这样的格式来删除文件.文件夹,基本上就能搞定啦. 在win8系统中RD这个命令比DEL来的强大很多,当我们有时无法删除一些需要权限的文件/文件夹的时候,不妨使用RD命令来试试哦.

Win8删除文件时提示无权限问题怎么办

1.我们在桌面按下键盘上的WIN+X调出功能菜单然后选择,效果如下图所示; 2.然后在打开进入到"CD 文件夹" 我们可以使用 DEL 命令来删除文件(cd是cmd命令下的一个进入目录的命令); 3.使用DEL删除无效后,再使用 "RD 文件夹名"这样的格式来删除文件.文件夹,基本上就能搞定啦. 通过命令方式删除是非常的简单了,当然如果是没有权限需要设置用户权限了,这个问题本站有相关教程给各位推荐一下(Win7系统怎么设置Everyone账户权限?Win7账户权限设