当前位置: 首页 > news >正文

MySQL视图定义者和安全性definer/invoker的区别

definer和invoker的区别

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

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

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

definer

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

CREATE DEFINER=dev@% PROCEDURE p_user_login(IN u_name VARCHAR(25), IN u_password VARCHAR(100))
BEGIN
SELECT 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;

invoker

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

示例:

CREATE DEFINER=dev@% PROCEDURE p_user_login(IN u_name VARCHAR(25), IN u_password VARCHAR(100))
SQL SECURITY INVOKER
BEGIN
SELECT 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;

 

http://www.rkmt.cn/news/5751.html

相关文章:

  • 软件测试day2
  • 软件测式学习
  • 担心安全与速度?这份跨网文件传输方式推荐清单请收好!
  • kettle基本操作3:剪切原字段末尾的空格符
  • Guid g = Guid.Empty;Guid.TryParse(, out g);
  • C++ std::vector
  • OpenLDAP 常见命令行命令及解析
  • 【C++】类与对象(下) - 详解
  • Flutter个性化主题系统:Material Design 3的深度定制
  • Go使用cyclicbarrier示例
  • 剑指offer-30、连续⼦数组的最⼤和
  • 小区物业的智慧:轻松图解JVM垃圾回收的奥秘
  • CUDA多版本安装切换(转链接自用)
  • 权变与权力异化,是斗争的根源,超越自我,良性循环
  • 元推理AGI,是人类文明的结晶,超越爱因斯坦相对论,是文明进步的必然
  • PLC结构化文本设计模式——原型模式(Prototype Pattern)
  • PHP-FPM 深度调优指南 告别 502 错误,让你的 PHP 应用飞起来
  • RAG系统大脑调教指南:模型选择、提示设计与质量控保一本通
  • trl ppo
  • 微软2018年第四季度顶级漏洞赏金猎人榜单揭晓
  • 能源汽车智能线控底盘
  • DP 凸性优化:wqs 二分
  • 浦东再添一所一流高校,上海交通大学医学院浦东校区正式启用
  • nccl study
  • 【GitHub每日速递 250916】2053 个 n8n 工作流曝光!365 种集成 + 可视化管理,效率直接拉满
  • 0129_迭代器模式(Iterator)
  • HJ7 取近似值
  • 活动报名:Voice First!Demo Day@Voice Agent Camp,9.22,上海丨超音速计划 2025
  • 《原子习惯》-读书笔记2
  • CF1626D 题解