zoukankan      html  css  js  c++  java
  • MySQL存储过程之安全策略

    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会成功,原因见之前章节描述.

  • 相关阅读:
    第五章
    第四章
    第三章
    第二章
    第一章
    configparser-xml-subprocess-shutil
    sys,os,模块-正则表达式
    %----format 格式化字符串---- 生成器---- 迭代器
    python 内置函数
    python 内置函数!
  • 原文地址:https://www.cnblogs.com/free-coder/p/4777399.html
Copyright © 2011-2022 走看看