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设置访问权限相关推荐

  1. 如何在mysql中创建过程_如何在MySQL 中创建存储过程?

    问题阐述 自MySQL 5.0 开始,MySQL 就支持存储过程.存储过程是一些被用户定义的SQL 语句集合.一个存储程序是可以被存储在服务器中的一套SQL 语句.存储过程可以被程序.触发器或另一个存 ...

  2. 用于在MYSQL中创建存储过程的关键字是_下面选项中,用于在删除存储过程时,检测存储过程是否存在的关键字是_学小易找答案...

    [判断题]秦陵兵马俑三号坑设计的是 军事指挥部 . [单选题]以下不是超塑性变形特点的是:( ) [判断题]如果从表中的外键引用了主表中的值,则不能删除主表中被引用的数据. [单选题]下面选项中,用于 ...

  3. mysql创建存储过程意义_浅谈一下mySql中创建存储过程

    首先说一下为什么要使用存储过程,存储过程是在数据库中预编译的程序代码,其执行效率显然要比从程序端传过去的sql语句要高的多,这样既可以节省网络带宽,又可以加快sql的执行速度,可以很好的提高系统的性能 ...

  4. navicat连接CentOS的mysql在创建存储过程时出现1146 - Table ‘mysql.proc’ doesn't exist的问题

    场景: 以下操作都是客户机和云主机之间 客户机用navicat 云主机用mysql 原因,我在navicat中嫌碍事,顺手把mysql给删了 解决方案如下: service mysqld stop p ...

  5. 如何在MySQL中创建存储过程

    看个具体的例子: 在TEST数据库中创建一个存储过程,名为getRecord: DELIMITER $$ DROP PROCEDURE IF EXISTS `TEST`.`getRecord` $$ ...

  6. mysql中创建表时提示 no database selected

    用习惯了oracle或者sqlserver的界面形式 当用到mysql时创建表时往往就会忘记添加表空间这个前提. 在一个用户下面可建多个表空间 使用语句 create database  your_d ...

  7. oracle建表时添加comment,MYSQL中创建表时可以直接声明comment,ORACLE中似乎不可以,那么oracle该怎样简明地声明comment...

    CREATE TABLE `smbms_user` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID', `userCode` varch ...

  8. mysql 创建带参数的存储过程_在MySQL中创建带有IN和OUT参数的存储过程的方法

    在 MySQL 中创建储存过程的语法很难记,除非你经常跟储存过程打交道,原因很简单,语法不是什么小笑话.如果你通过命令行控制 MySQL,你需要记住准确的语法.一个快速示例可以很好的帮助你做到这点.在 ...

  9. mysql jdbc 创建存储过程_mysql JDBC 调用存储过程

    与oracle不同,mysql不支持匿名块,如果需要写过程语句,则必需定义存储过程.如果你会oracle的存储过程,那么mysql的存储过程也很简单了. 一.创建存储过程 create procedu ...

  10. 创建存储过程时出现的This function has none of DETERMINISTIC, NO SQL解决办法

    This function has none of DETERMINISTIC, NO SQL解决办法 创建存储过程时 出错信息: ERROR 1418 (HY000): This function ...

最新文章

  1. 一个奇葩的标志寄存器 flag寄存器
  2. laydate兼容bootstrap
  3. 失眠害死人-jQueryAJAX
  4. H.264基础知识及视频码流解析
  5. android ipc简单理解,Android IPC 机制【1】--简介
  6. 中怎样载入选区_ps中快捷大全
  7. 基于lis3dh的简易倾角仪c源码_开源网关apisix源码阅读和最佳实践
  8. yum安装指定(特定)版本(旧版本)软件包的方法
  9. DELL服务器装机网络问题
  10. Mac+virtualbox安装win7
  11. 创建 GitHub 个人访问令牌
  12. 百度网盘直链下载助手(MacOSChrome)
  13. C#学习笔记:子类于父类的构造函数的关系【By Myself】
  14. 【理解】ORB特征提取与ORBSLAM特征匹配简要剖析
  15. Windows下安装与配置Docker
  16. 支持向量机(SVM)算法原理
  17. StrConv 内码转换
  18. 应届生毕业就失业?这该怎么办
  19. python实现调用百度API批量翻译单词
  20. 固态硬盘为什么不建议分区?

热门文章

  1. 按键精灵开发环境搭建
  2. 实用COGNOS全程学习笔记
  3. 毛书卿:4.30黄金最新行情分析,白银TD晚间操作策略及解套
  4. 比 rm 更安全的删除文件命令:shred
  5. html页面银引入html,index.html
  6. [转载]如何用VB6在中文系统下把Unicode编码的日文字符转成Shift-JIS编码
  7. 致后浪:6句肺腑之言,望你少走弯路
  8. Django web 开发(一)前端学习概述
  9. 为什么开发团队喜欢Scrum?
  10. 【Java】面向对象笔记(中)(二)