mysql 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方面的内容,感兴趣的朋友可以关注下~
mysql definer_mysql常见问题之视图权限控制--安全性为DEFINER相关推荐
- definer= 授权_mysql常见问题之视图权限控制--安全性为DEFINER
概述 前段时间在做数据库备份时提示: mysqldump: Couldn't execute 'SHOW FIELDS FROM `v_ocs_group_production_lines1`': S ...
- mysql applier_新特性解读 | MySQL 8.0.18 有权限控制的复制
背景 MySQL 8.0.18 以前,从服务器都是在不检查权限的情况下执行复制事务的,这样做是为了能够让主服务器获取所有内容.实际上,这意味着从机完全信任主机.但是,可能存在一些设置,其中更改跨越了主 ...
- mysql视图存储_Mysql 视图、存储过程以及权限控制
导读: 该文章为视图.存储过程.用户权限练习: 如果有不对的地方欢迎指出与补充: 该基础练习基于MySQL5.0以上: 语句格式: 1. 视图格式: create view view_name[列名, ...
- 认真学习MySQL中的角色权限控制
[1] 权限管理 关于MySQL的权限简单的理解就是MySQL运行你做你权力以内的事情,不可以越界.比如只允许你执行select操作,那么你就不能执行update操作.只允许你从某台机器上连接MySQ ...
- mysql 函数权限控制_MySql授权和撤销权限操作
MySql授权和撤销权限操作 作者:PHPYuan 时间:2018-10-05 03:41:17 MySQL 赋予用户权限命令的简单格式可概括为: grant 权限 on 数据库对象 to 用户 用户 ...
- mysql用户控制登录_MySql用户权限控制_MySQL
bitsCN.com MySql用户权限控制 本文将介绍MySql创建帐号,删除帐号,设置和介绍各种帐号的权限 创建用户帐号: www.bitsCN.com [sql] CREATE USER use ...
- asp.net core mvc权限控制:在视图中控制操作权限
在asp.net core mvc中提供了权限验证框架,前面的文章中已经介绍了如何进行权限控制配置,权限配置好后,权限验证逻辑自动就会执行,但是在某些情况下,我们可能需要在代码里或者视图中通过手工方式 ...
- Mysql视图权限设置的踩坑经历
1.事件背景 今天临近中午饭点时,开发同事发来需求,在mariadb库创建两个视图,要求指定帐号有只读权限. 很简单的需求,连上服务器,两条grant命令一刷,fulsh privileges 回车, ...
- 10、MySQL权限控制实现原理
MySQL 权限表在数据库启动时载入内存,用户通过身份认证后,系统会在内存中进行相应权限的存取.当 MySQL 允许一个用户执行各种操作时,它将首先核实该用户向 MySQL 服务器发送的连接请求,然后 ...
最新文章
- Ubuntu16.04下配置最新Vs Code的C/C++开发环境
- win10 纯净版安装 U盘制作
- Devops (1)
- java web权限_Javaweb权限管理设计思路
- 设计灵感|耐人寻味的中文字体海报
- antd table动态表头_react动态配置antd table的columns
- 2018.10.20 2018-2019 ICPC,NEERC,Southern Subregional Contest(Online Mirror, ACM-ICPC Rules)
- Hbase启动hbase shell运行命令报Class path contains multiple SLF4J bindings.错误
- 对路径“bin\MySql.Data.xml”的访问被拒绝的解决方法
- ubuntu风扇转速控制与系统状态监控
- 用 Python 可视化分析全球火山分布,发现了这些有趣的现象
- 推荐几个用于Linux系统的PDF文档查看器
- 九、SpringBoot——默认错误页面错误页面定制
- 如何免费使用内网穿透
- 利用MATLAB视频函数工具箱的…
- 土木/岩土期刊版面费/审稿费统计列表
- Hydration failed because the initial UI does not match what was rendered on the server.问题原因之一
- python在Scikit-learn中用决策树和随机森林预测NBA获胜者
- python的pyaudio教程入门_Python豪杰物语:pyaudio的安装播放音频示例
- Tomb.Finance的每周更新(5.9-5.15)
热门文章
- uimsbf和 bslbf的含义
- consul配置参数大全、详解、总结
- 对象的克隆——原型模式
- 今天说说OPPO——OPPO 实时数仓揭秘:从顶层设计实现离线与实时的平滑迁移
- Hive _分桶及抽样查询
- hive启动mapreduce任务后,被killed
- 给定a、b两个文件,各存放50亿个url,每个url各占64字节,内存限制是4G,让你找出a、b文件共同的url?
- 使用crontab定时保存top信息到文件,并保存到数据库中
- spring整合mybatis基于xml配置
- 使用Math 类 和 Random类 两种方式生成 20 到30之间的随机整数---java基础