MySQL中创建存储过程时通过DEFINER和SQL SECURITY设置访问权限
procedure与function、trigger等创建时紧接着CREATE都有个definer可选项,该definer规定了访问该procedure等的安全控制。
CREATE DEFINER = `bigdata1`@`192.168.%` PROCEDURE `Test`()
BEGIN......
END;
上面示例指定definer为用户bigdata1
@192.168.%
,所以任意用户A访问该PROCEDURE 时,能否成功取决于A是否有调用该PROCEDURE的权限,以及definer是否有procedure中的SELECT的权限。
DEFINER默认为当前用户,也可指定其他用户。如果想通过访问者来判断是否具有访问该PROCEDURE 的权限,则可用SQL SECURITY指定。
CREATE DEFINER = `bigdata1`@`192.168.%` PROCEDURE `Test`()SQL SECURITY INVOKER
BEGIN......
END;
该示例虽然指定了DEFINER ,但同时也指定了SQL SECURITY 类型为INVOKER ,SQL SECURITY 优先级高,所以安全类型为INVOKER,用户能否访问取决于用户是否有执行该PROCEDURE 的权限及该PROCEDURE 中的SELECT 权限(与select操作的表有关)。
当然,也可用SQL SECURITY 指定DEFINER:SQL SECURITY DEFINER
MySQL中创建存储过程时通过DEFINER和SQL SECURITY设置访问权限相关推荐
- 如何在mysql中创建过程_如何在MySQL 中创建存储过程?
问题阐述 自MySQL 5.0 开始,MySQL 就支持存储过程.存储过程是一些被用户定义的SQL 语句集合.一个存储程序是可以被存储在服务器中的一套SQL 语句.存储过程可以被程序.触发器或另一个存 ...
- 用于在MYSQL中创建存储过程的关键字是_下面选项中,用于在删除存储过程时,检测存储过程是否存在的关键字是_学小易找答案...
[判断题]秦陵兵马俑三号坑设计的是 军事指挥部 . [单选题]以下不是超塑性变形特点的是:( ) [判断题]如果从表中的外键引用了主表中的值,则不能删除主表中被引用的数据. [单选题]下面选项中,用于 ...
- mysql创建存储过程意义_浅谈一下mySql中创建存储过程
首先说一下为什么要使用存储过程,存储过程是在数据库中预编译的程序代码,其执行效率显然要比从程序端传过去的sql语句要高的多,这样既可以节省网络带宽,又可以加快sql的执行速度,可以很好的提高系统的性能 ...
- navicat连接CentOS的mysql在创建存储过程时出现1146 - Table ‘mysql.proc’ doesn't exist的问题
场景: 以下操作都是客户机和云主机之间 客户机用navicat 云主机用mysql 原因,我在navicat中嫌碍事,顺手把mysql给删了 解决方案如下: service mysqld stop p ...
- 如何在MySQL中创建存储过程
看个具体的例子: 在TEST数据库中创建一个存储过程,名为getRecord: DELIMITER $$ DROP PROCEDURE IF EXISTS `TEST`.`getRecord` $$ ...
- mysql中创建表时提示 no database selected
用习惯了oracle或者sqlserver的界面形式 当用到mysql时创建表时往往就会忘记添加表空间这个前提. 在一个用户下面可建多个表空间 使用语句 create database your_d ...
- oracle建表时添加comment,MYSQL中创建表时可以直接声明comment,ORACLE中似乎不可以,那么oracle该怎样简明地声明comment...
CREATE TABLE `smbms_user` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID', `userCode` varch ...
- mysql 创建带参数的存储过程_在MySQL中创建带有IN和OUT参数的存储过程的方法
在 MySQL 中创建储存过程的语法很难记,除非你经常跟储存过程打交道,原因很简单,语法不是什么小笑话.如果你通过命令行控制 MySQL,你需要记住准确的语法.一个快速示例可以很好的帮助你做到这点.在 ...
- mysql jdbc 创建存储过程_mysql JDBC 调用存储过程
与oracle不同,mysql不支持匿名块,如果需要写过程语句,则必需定义存储过程.如果你会oracle的存储过程,那么mysql的存储过程也很简单了. 一.创建存储过程 create procedu ...
- 创建存储过程时出现的This function has none of DETERMINISTIC, NO SQL解决办法
This function has none of DETERMINISTIC, NO SQL解决办法 创建存储过程时 出错信息: ERROR 1418 (HY000): This function ...
最新文章
- 一个奇葩的标志寄存器 flag寄存器
- laydate兼容bootstrap
- 失眠害死人-jQueryAJAX
- H.264基础知识及视频码流解析
- android ipc简单理解,Android IPC 机制【1】--简介
- 中怎样载入选区_ps中快捷大全
- 基于lis3dh的简易倾角仪c源码_开源网关apisix源码阅读和最佳实践
- yum安装指定(特定)版本(旧版本)软件包的方法
- DELL服务器装机网络问题
- Mac+virtualbox安装win7
- 创建 GitHub 个人访问令牌
- 百度网盘直链下载助手(MacOSChrome)
- C#学习笔记:子类于父类的构造函数的关系【By Myself】
- 【理解】ORB特征提取与ORBSLAM特征匹配简要剖析
- Windows下安装与配置Docker
- 支持向量机(SVM)算法原理
- StrConv 内码转换
- 应届生毕业就失业?这该怎么办
- python实现调用百度API批量翻译单词
- 固态硬盘为什么不建议分区?