概述

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

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相关推荐

  1. definer= 授权_mysql常见问题之视图权限控制--安全性为DEFINER

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

  2. mysql applier_新特性解读 | MySQL 8.0.18 有权限控制的复制

    背景 MySQL 8.0.18 以前,从服务器都是在不检查权限的情况下执行复制事务的,这样做是为了能够让主服务器获取所有内容.实际上,这意味着从机完全信任主机.但是,可能存在一些设置,其中更改跨越了主 ...

  3. mysql视图存储_Mysql 视图、存储过程以及权限控制

    导读: 该文章为视图.存储过程.用户权限练习: 如果有不对的地方欢迎指出与补充: 该基础练习基于MySQL5.0以上: 语句格式: 1. 视图格式: create view view_name[列名, ...

  4. 认真学习MySQL中的角色权限控制

    [1] 权限管理 关于MySQL的权限简单的理解就是MySQL运行你做你权力以内的事情,不可以越界.比如只允许你执行select操作,那么你就不能执行update操作.只允许你从某台机器上连接MySQ ...

  5. mysql 函数权限控制_MySql授权和撤销权限操作

    MySql授权和撤销权限操作 作者:PHPYuan 时间:2018-10-05 03:41:17 MySQL 赋予用户权限命令的简单格式可概括为: grant 权限 on 数据库对象 to 用户 用户 ...

  6. mysql用户控制登录_MySql用户权限控制_MySQL

    bitsCN.com MySql用户权限控制 本文将介绍MySql创建帐号,删除帐号,设置和介绍各种帐号的权限 创建用户帐号: www.bitsCN.com [sql] CREATE USER use ...

  7. asp.net core mvc权限控制:在视图中控制操作权限

    在asp.net core mvc中提供了权限验证框架,前面的文章中已经介绍了如何进行权限控制配置,权限配置好后,权限验证逻辑自动就会执行,但是在某些情况下,我们可能需要在代码里或者视图中通过手工方式 ...

  8. Mysql视图权限设置的踩坑经历

    1.事件背景 今天临近中午饭点时,开发同事发来需求,在mariadb库创建两个视图,要求指定帐号有只读权限. 很简单的需求,连上服务器,两条grant命令一刷,fulsh privileges 回车, ...

  9. 10、MySQL权限控制实现原理

    MySQL 权限表在数据库启动时载入内存,用户通过身份认证后,系统会在内存中进行相应权限的存取.当 MySQL 允许一个用户执行各种操作时,它将首先核实该用户向 MySQL 服务器发送的连接请求,然后 ...

最新文章

  1. Ubuntu16.04下配置最新Vs Code的C/C++开发环境
  2. win10 纯净版安装 U盘制作
  3. Devops (1)
  4. java web权限_Javaweb权限管理设计思路
  5. 设计灵感|耐人寻味的中文字体海报
  6. antd table动态表头_react动态配置antd table的columns
  7. 2018.10.20 2018-2019 ICPC,NEERC,Southern Subregional Contest(Online Mirror, ACM-ICPC Rules)
  8. Hbase启动hbase shell运行命令报Class path contains multiple SLF4J bindings.错误
  9. 对路径“bin\MySql.Data.xml”的访问被拒绝的解决方法
  10. ubuntu风扇转速控制与系统状态监控
  11. 用 Python 可视化分析全球火山分布,发现了这些有趣的现象
  12. 推荐几个用于Linux系统的PDF文档查看器
  13. 九、SpringBoot——默认错误页面错误页面定制
  14. 如何免费使用内网穿透
  15. 利用MATLAB视频函数工具箱的…
  16. 土木/岩土期刊版面费/审稿费统计列表
  17. Hydration failed because the initial UI does not match what was rendered on the server.问题原因之一
  18. python在Scikit-learn中用决策树和随机森林预测NBA获胜者
  19. python的pyaudio教程入门_Python豪杰物语:pyaudio的安装播放音频示例
  20. Tomb.Finance的每周更新(5.9-5.15)

热门文章

  1. uimsbf和 bslbf的含义
  2. consul配置参数大全、详解、总结
  3. 对象的克隆——原型模式
  4. 今天说说OPPO——OPPO 实时数仓揭秘:从顶层设计实现离线与实时的平滑迁移
  5. Hive _分桶及抽样查询
  6. hive启动mapreduce任务后,被killed
  7. 给定a、b两个文件,各存放50亿个url,每个url各占64字节,内存限制是4G,让你找出a、b文件共同的url?
  8. 使用crontab定时保存top信息到文件,并保存到数据库中
  9. spring整合mybatis基于xml配置
  10. 使用Math 类 和 Random类 两种方式生成 20 到30之间的随机整数---java基础