概述

前段时间在做数据库备份时提示:

mysqldump: Couldn't execute 'SHOW FIELDS FROM `v_ocs_group_production_lines1`': SELECT command denied to user ''@'%' for column 'work_date' in table 't_ocs_employee_attendace' (1143)

这个报错还是比较常见的问题之一,所以就拿来分析了。


思路:

当视图的安全性为DEFINER时,数据库中存在DEFINER指定的用户,也就是图中的定义者所填写的。并且该用户拥有对应的权限,才能执行。与当前用户是否有权限无关。

当视图的安全性为INVOKER时,只要执行者有执行权限,就可以成功执行。

definer和invoker的区别:

在创建视图或者是存储过程的时候,是需要定义安全验证方式的(也就是安全性SQL SECURITY),其值可以为definer或invoker,表示在执行过程中,使用谁的权限来执行。

definer:由definer(定义者)指定的用户的权限来执行

invoker:由调用这个视图(存储过程)的用户的权限来执行

1、definer

当定义为DEFINER时,必须数据库中存在DEFINER指定的用户,并且该用户拥有对应的操作权限,才能成功执行。与当前用户是否有权限无关。

示例:

CREATE DEFINER=dev@% PROCEDURE p_user_login(IN u_name VARCHAR(25), IN u_password VARCHAR(100))BEGINSELECT u.id, u.name, u.tid, u.status, u.is_report FROM v_user u WHERE u.name=u_name AND u.password=u_password AND u.status=1;END;

2、invoker

当定义为INVOKER时,只要执行者有执行权限,就可以成功执行。

示例:

CREATE DEFINER=dev@% PROCEDURE p_user_login(IN u_name VARCHAR(25), IN u_password VARCHAR(100))SQL SECURITY INVOKERBEGINSELECT u.id, u.name, u.tid, u.status, u.is_report FROM v_user u WHERE u.name=u_name AND u.password=u_password AND u.status=1;END;

1、查看视图

这里先看下视图的一些定义。

可以看到定义者是指定用户了。


2、尝试授权

这个时候是授权失败的。

mysql> GRANT SELECT ON test.v_ocs_group_production_lines1 TO 'root'@'localhost';mysql> GRANT SELECT ON test.v_ocs_group_production_lines1 TO 'root'@'%';

3、修改definer


4、测试

测试通过。


觉得有用的朋友多帮忙转发哦!后面会分享更多devops和DBA方面的内容,感兴趣的朋友可以关注下~

definer= 授权_mysql常见问题之视图权限控制--安全性为DEFINER相关推荐

  1. mysql definer_mysql常见问题之视图权限控制--安全性为DEFINER

    概述 前段时间在做数据库备份时提示: mysqldump: Couldn't execute 'SHOW FIELDS FROM `v_ocs_group_production_lines1`': S ...

  2. 认证、授权、鉴权、权限控制

    目录 0x01 概念 0x02 前端-后端授权/鉴权方案 2.1 Http Basic Authentication 2.2 session-cookie 2.3 token 2.4 JWT(Json ...

  3. Jenkin权限控制——项目矩阵授权策略

    开启授权策略 Jenkins的项目权限控制通过[授权策略]实现,[授权策略]需要plugins提供,首先需要安装Role-based Authorization Strategy 安装Role-bas ...

  4. Jenkin权限控制——基于角色授权策略

    开启授权策略 Jenkins的项目权限控制通过[授权策略]实现,[授权策略]需要plugins提供,首先需要安装Role-based Authorization Strategy 安装Role-bas ...

  5. 认证、授权、鉴权和权限控制

    原文地址 https://www.cnblogs.com/badboyh2o/p/11068779.html 如有侵权,请联系删除,谢谢! 本文将对信息安全领域中认证.授权.鉴权和权限控制这四个概念给 ...

  6. 认证、授权、鉴权和权限控制概念区别

    1.认证: 认证是指根据声明者所特有的识别信息,确认声明者的身份.认证在英文中对应于identification这个单词. 最常见的认证实现方式是通过用户名和密码,但认证方式不限于此.下面都是当前常见 ...

  7. mysql的财务视图_Mysql中的视图

    阅读目录 什么是视图 通俗的讲,视图就是一条SELECT语句执行后返回的结果集.所以我们在创建视图的时候,主要的工作就落在创建这条SQL查询语句上. 视图的特性 视图是对若干张基本表的引用,一张虚表, ...

  8. ASP.NET Core 实战:基于 Jwt Token 的权限控制全揭露

    一.前言 在涉及到后端项目的开发中,如何实现对于用户权限的管控是需要我们首先考虑的,在实际开发过程中,我们可能会运用一些已经成熟的解决方案帮助我们实现这一功能,而在 Grapefruit.VuCore ...

  9. 如何对Hive Metastore进行权限控制

    本文首发微信公众号:码上观世界 中国"红武士"--刘粹刚 东方古国,炎黄子孙,五千余载,历史文明;. 诗礼传承,世界同钦,仁爱与人,道德长青. 濒江近海,有我南京,十朝都会,物阜文 ...

最新文章

  1. sublime text 安装Package Control
  2. Iphone 指触行为会
  3. 企业证书系列之数据加密
  4. 我们在tool里给ui element设置断点,然后操作的时候,断点就触发了。Framework是咋实现的
  5. JavaScript 数组处理方法总结
  6. php助手函数自定义,Laravel 添加自定义助手函数
  7. JFFS2文件系统挂载过程优化的分析报告
  8. python读取json格式的超参数
  9. IDEA(Pycharm)一家子常用快捷键Keymap对应的英文、中文与具体位置
  10. 【转】Delphi7程序调用C#写的DLL解决办法
  11. 数据库变为可疑_数据库出现可疑解决办法
  12. 单片机快速开根号函数
  13. Java 上机----实训操作6---汽车类
  14. 【Spring Securtiy】A granted authority textual representation is required
  15. 马斯克辞任CEO,产品经理如何用项目协作软件武装自己?
  16. 周金瑞11.17黄金还会涨?黄金原油价格分析及白银操作建议
  17. 从0基础学习Python(13)[面向对象思想]
  18. 计算机默认网关不可用如何解决问题,Win10网络诊断后提示“默认网关不可用”的问题怎么解决?...
  19. 黑马编程开发各种免费资源-安排一下
  20. php 商品模块添加商品属性,添加新商品

热门文章

  1. 【天池赛事】零基础入门语义分割-地表建筑物识别 Task3:网络模型结构发展
  2. MySQL【环境搭建 02】Linux 非 root 用户部署 mysql-5.7.28 设置开机启动及问题汇总(含云盘资源)
  3. html中js添加或删除activex,JS:操作样式表2 :用JS实现添加和删除一个类名的功能(addClass()和removeClass())...
  4. python创建float型的列表_如何在Python中进行列表的创建?
  5. java 对象转json,java首字母小写,判断方法是否为javabean方法
  6. 浙江理工大学信息学院本科生创新项目总结报告——简单的后台用户管理项目
  7. DataGrip 2019.2.5 —— 中文列名(字段名)(columns name)乱码问题解决方案
  8. android与html注册登录,Android登录注册源码
  9. 【项目】itdage-java获取天气和发短信
  10. jQuery使用详解