首页 > 数据库技术 > 详细

MySQL存储过程之安全策略

时间:2015-09-02 01:46:13      阅读:181      评论:0      收藏:0      [点我收藏+]

1. CREATE ROUTINE

1 GRANT CREATE ROUTINE  
2 ON database-name . *  
3 TO user(s)   
4 [WITH GRANT OPTION]; 

  CREATE ROUTINE可以创建存储过程和函数,还可以创建视图和表.现在内置的root拥有该权限,同时清空有ALTER ROUTINE权限.

2. EXECUTE

1 GRANT EXECUTE  
2 ON database-name . *  
3 TO user(s)   
4 [WITH GRANT OPTION]; 

  EXECUTE决定是否可以使用或执行存储过程,存储过程的创建者默认拥有这个权限.

3. SHOW ROUTINE

1 GRANT SHOW ROUTINE
2 ON database-name . *  
3 TO user(s)   
4 [WITH GRANT OPTION]; 

  由于我们默认已拥有了控制视图的GRANT SHOW VIEW特权,在此基础上,为保证兼容,将来可能会添加GRANT SHOW ROUTINE特权

4. INVOKERS AND DEFINERS 

1 CREATE PROCEDURE p26 ()    
2     SQL SECURITY INVOKER
3     SELECT COUNT(*) FROM t //
4 CREATE PROCEDURE p27 ()
5     SQL SECURITY DEFINER
6     SELECT COUNT(*) FROM t //
7 GRANT INSERT ON db5.* TO peter; //

  上面的例子前面已提到,你是root用户创建两个存储过程并将插入权限赋给peter.注意peter没有对表t的select权限,只有root用户有.正因如此,以上代码Peter调用p26会失败,而调用p27会成功,原因见之前章节描述.

MySQL存储过程之安全策略

原文:http://www.cnblogs.com/free-coder/p/4777399.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!