definer= 授权_mysql常见问题之视图权限控制--安全性为DEFINER
概述
前段时间在做数据库备份时提示:
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相关推荐
- mysql definer_mysql常见问题之视图权限控制--安全性为DEFINER
概述 前段时间在做数据库备份时提示: mysqldump: Couldn't execute 'SHOW FIELDS FROM `v_ocs_group_production_lines1`': S ...
- 认证、授权、鉴权、权限控制
目录 0x01 概念 0x02 前端-后端授权/鉴权方案 2.1 Http Basic Authentication 2.2 session-cookie 2.3 token 2.4 JWT(Json ...
- Jenkin权限控制——项目矩阵授权策略
开启授权策略 Jenkins的项目权限控制通过[授权策略]实现,[授权策略]需要plugins提供,首先需要安装Role-based Authorization Strategy 安装Role-bas ...
- Jenkin权限控制——基于角色授权策略
开启授权策略 Jenkins的项目权限控制通过[授权策略]实现,[授权策略]需要plugins提供,首先需要安装Role-based Authorization Strategy 安装Role-bas ...
- 认证、授权、鉴权和权限控制
原文地址 https://www.cnblogs.com/badboyh2o/p/11068779.html 如有侵权,请联系删除,谢谢! 本文将对信息安全领域中认证.授权.鉴权和权限控制这四个概念给 ...
- 认证、授权、鉴权和权限控制概念区别
1.认证: 认证是指根据声明者所特有的识别信息,确认声明者的身份.认证在英文中对应于identification这个单词. 最常见的认证实现方式是通过用户名和密码,但认证方式不限于此.下面都是当前常见 ...
- mysql的财务视图_Mysql中的视图
阅读目录 什么是视图 通俗的讲,视图就是一条SELECT语句执行后返回的结果集.所以我们在创建视图的时候,主要的工作就落在创建这条SQL查询语句上. 视图的特性 视图是对若干张基本表的引用,一张虚表, ...
- ASP.NET Core 实战:基于 Jwt Token 的权限控制全揭露
一.前言 在涉及到后端项目的开发中,如何实现对于用户权限的管控是需要我们首先考虑的,在实际开发过程中,我们可能会运用一些已经成熟的解决方案帮助我们实现这一功能,而在 Grapefruit.VuCore ...
- 如何对Hive Metastore进行权限控制
本文首发微信公众号:码上观世界 中国"红武士"--刘粹刚 东方古国,炎黄子孙,五千余载,历史文明;. 诗礼传承,世界同钦,仁爱与人,道德长青. 濒江近海,有我南京,十朝都会,物阜文 ...
最新文章
- sublime text 安装Package Control
- Iphone 指触行为会
- 企业证书系列之数据加密
- 我们在tool里给ui element设置断点,然后操作的时候,断点就触发了。Framework是咋实现的
- JavaScript 数组处理方法总结
- php助手函数自定义,Laravel 添加自定义助手函数
- JFFS2文件系统挂载过程优化的分析报告
- python读取json格式的超参数
- IDEA(Pycharm)一家子常用快捷键Keymap对应的英文、中文与具体位置
- 【转】Delphi7程序调用C#写的DLL解决办法
- 数据库变为可疑_数据库出现可疑解决办法
- 单片机快速开根号函数
- Java 上机----实训操作6---汽车类
- 【Spring Securtiy】A granted authority textual representation is required
- 马斯克辞任CEO,产品经理如何用项目协作软件武装自己?
- 周金瑞11.17黄金还会涨?黄金原油价格分析及白银操作建议
- 从0基础学习Python(13)[面向对象思想]
- 计算机默认网关不可用如何解决问题,Win10网络诊断后提示“默认网关不可用”的问题怎么解决?...
- 黑马编程开发各种免费资源-安排一下
- php 商品模块添加商品属性,添加新商品
热门文章
- 【天池赛事】零基础入门语义分割-地表建筑物识别 Task3:网络模型结构发展
- MySQL【环境搭建 02】Linux 非 root 用户部署 mysql-5.7.28 设置开机启动及问题汇总(含云盘资源)
- html中js添加或删除activex,JS:操作样式表2 :用JS实现添加和删除一个类名的功能(addClass()和removeClass())...
- python创建float型的列表_如何在Python中进行列表的创建?
- java 对象转json,java首字母小写,判断方法是否为javabean方法
- 浙江理工大学信息学院本科生创新项目总结报告——简单的后台用户管理项目
- DataGrip 2019.2.5 —— 中文列名(字段名)(columns name)乱码问题解决方案
- android与html注册登录,Android登录注册源码
- 【项目】itdage-java获取天气和发短信
- jQuery使用详解