MySQL存储过程权限分析
一、权限相关:
1.修改sql security
Sql代码
ALTER PROCEDURE www SQL SECURITY INVOKER ;
ALTER PROCEDURE www SQL SECURITY DEFINER ;
(1)MySQL存储过程是通过指定SQL SECURITY子句指定执行存储过程的实际用户;
(2)如果SQL SECURITY子句指定为DEFINER,存储过程将使用存储过程的DEFINER执行存储过程,验证调用存储过程的用户是否具有存储过程的execute权限和DEFINER用户是否具有存储过程引用的相关对象的权限;
(3)如果SQL SECURITY子句指定为INVOKER,那么MySQL将使用当前调用存储过程的用户执行此过程,并验证用户是否具有存储过程的execute权限和存储过程引用的相关对象的权限;
(4)如果不显示的指定SQL SECURITY子句,MySQL默认将以DEFINER执行存储过程。
3.执行存储过程授权
Sql代码
GRANT EXECUTE ON PROCEDURE test.* TO 'wtc'@'%';
GRANT CREATE ROUTINE,ALTER ROUTINE, SELECT,CREATE, INSERT, UPDATE, DELETE, EXECUTE ON test.* TO 'wtc'@'%' IDENTIFIED BY '111111'
CREATE ROUTINE : 创建存储过程的权限
ALTER ROUTINE : 修改存储过程的权限
二、实验:
session 1:
mysql> show grants for ly@'%';
| Grants for ly@%
| GRANT USAGE ON *.* TO 'ly'@'%' IDENTIFIED BY PASSWORD '*23AE809DDACAF96AF0FD78ED04B6A265E05AA257'
mysql> show create procedure hhl.pr_param_in\G
*************************** 1. row ***************************
Procedure: pr_param_in
sql_mode:
Create Procedure: CREATE DEFINER=`root`@`localhost` PROCEDURE `pr_param_in`(
in id int
)
SQL SECURITY DEFINER
begin
INSERT INTO hhl.t VALUES(1,'hhl');
end
character_set_client: latin1
collation_connection: latin1_swedish_ci
Database Collation: utf8_general_ci
1 row in set (0.00 sec)
grant execute on procedure hhl.pr_param_in to 'ly'@'%';
session 2:
mysql -uly -p123 -h 1.1.1.5
mysql> call hhl.pr_param_in(1);
Query OK, 1 row affected (0.00 sec)
上面 SQL SECURITY=DEFINER,ly 用户调用存储过程是以DEFINER=`root`@`localhost`,即检查调用者ly是否具有存储过程的execute权限和DEFINER用户(`root`@`localhost`)是否具有存储过程引用的相关对象的权限.
*如果SQL SECURITY =INVOKER
session 1 :
mysql> ALTER PROCEDURE hhl.pr_param_in SQL SECURITY INVOKER;
Query OK, 0 rows affected (0.00 sec)
mysql> show create procedure hhl.pr_param_in\G
*************************** 1. row ***************************
Procedure: pr_param_in
sql_mode:
Create Procedure: CREATE DEFINER=`root`@`localhost` PROCEDURE `pr_param_in`(
in id int
)
SQL SECURITY INVOKER
begin
INSERT INTO hhl.t VALUES(1,'hhl');
end
character_set_client: latin1
collation_connection: latin1_swedish_ci
Database Collation: utf8_general_ci
1 row in set (0.00 sec)
session 2 :
mysql> call hhl.pr_param_in(1);
ERROR 1142 (42000): INSERT command denied to user 'ly'@'node5' for table 't'
上面 SQL SECURITY=INVOKER,ly 用户调用存储过程,即检查ly是否具有存储过程的execute权限和是否有存储过程引用的相关对象的权限. ly 用户确实没有对 hhl 库下的t 表insert权限。
MySQL存储过程权限分析的更多相关文章
- MySql 存储过程、触发器和权限问题
存储过程 1.1 什么是存储过程 存储过程,带有逻辑的sql语句 之前的sql没有条件判断,没有循环 存储过程带上流程控制语句(if while) 1.2 存储过程特点 1)执行效率非常快!存储过程 ...
- [转]MySQL中存储过程权限问题
MySQL中以用户执行存储过程的权限为EXECUTE 比如我们在名为configdb的数据库下创建了如下存储过程,存储过程的定义者为user_admin use configdb; drop proc ...
- MySQL 存储过程 函数 routine 权限
MySQL 存储过程 函数 routine 权限 Table of Contents 1. mysql存储过程/函数权限 1.1. 相关对象操作权限检查 1.2. 执行权限 1 mysql存储过程/函 ...
- mysql存储过程详解
mysql存储过程详解 1. 存储过程简介 我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的S ...
- MySQL存储过程调试工具-dbForge Studio for MySQL
工具官网地址:http://www.devart.com/dbforge/mysql/studio/ 对于某些存储过程很多且复杂的SQL的应用,在短时间内要使得所有MySQL存储过程和函数正常运行,那 ...
- mysql 存储过程详解 存储过程
mysql存储过程详解 1. 存储过程简介 我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成 ...
- MySQL存储过程详解 mysql 存储过程
原文地址:MySQL存储过程详解 mysql 存储过程作者:王者佳暮 mysql存储过程详解 1. 存储过程简介 我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储 ...
- 转 MySQL 用户权限详细汇总
http://blog.csdn.net/mchdba/article/details/45934981 1,MySQL权限体系 MySQL 的权限体系大致分为5个层级: 全局层级: 全局权限适用于一 ...
- MySQL存储过程详解 mysql 存储过程(二)
mysql存储过程详解 1. 存储过程简介 我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL ...
随机推荐
- 初学者的checklist:对于QTP,你应该知道的9个基本概念
学习QTP或者其他相关任何工具的方法都是首先把基本的概念过一遍.正所谓砍柴不怕磨刀功,一旦你对这些概念熟悉了,你就可以学习该工具的高级部分了.写这篇文章的目标是列出初学QTP的人应该掌握的所有基本概念 ...
- ggplot2 demo
title <- rep("A Really Rather Long Text Label", 25)value <- runif(25, 1,10)spacing & ...
- Android studio中Rendering Problems不能可视化操作的解决办法
出现:Rendering Problems the following classes could not be found:android.support.v7.internal.widget.Ac ...
- CSS+DIV问题!DIV的最小高度问题!
DIV层的最小高度问题!就是一个DIV有个最小高度,但是如果DIV层中的内容很多,DIV的高度会根据内容而进行拉长!要求IE6.IE7还有firefox都要兼容!我试了很多网上的方法都不好用!请测试后 ...
- Kaleidoscope for mac
mac下的对比工具Kaleidoscope,是一款不错的对比工具,界面被广大用户所喜爱. window下使用beyond compare 3,具体设置步骤,请见:http://www.cnblogs. ...
- php有些系统会报错或提示 Cannot modify header information - headers already sent by
Warning: Cannot modify header information - headers already sent by (output started at /home/test/do ...
- adb shell settings ....
Android4.2的源码android-17\com\android\commands目录下较之前的版本多了一个settings命令,查看其中的SettingsCmd.java文件,末尾有命令的帮助 ...
- C# 创建iis站点以及IIS站点属性,iis不能启动站点
DontLog = False是否将客户端的请求写入日志文件 2011年04月09日 #region CreateWebsite 新增网站 public string CreateWebSite(st ...
- LA 3295 (计数 容斥原理) Counting Triangles
如果用容斥原理递推的办法,这道题确实和LA 3720 Highway很像. 看到大神们写的博客,什么乱搞啊,随便统计一下,这真的让小白很为难,于是我决定用比较严格的语言来写这篇题解. 整体思路很简单: ...
- SJ9012: IE6 IE7 不支持 JSON 对象
标准参考 JSON 是一种数据交换格式,RFC 4627 对 JSON 进行了详细描述. 根据 ECMA-262(ECMAScript)第 5 版中描述,JSON 是一个包含了函数 parse 和 s ...