开发学院数据库MySQL MySQL 5.0新特性教程 存储过程:第四讲 阅读

MySQL 5.0新特性教程 存储过程:第四讲

 2005-10-31 16:42:19 来源:WEB开发网   
核心提示: 2. Privileges EXECUTEGRANT EXECUTE ON p TO peter[WITH GRANT OPTION];上面的特权是决定你是否可以使用或执行存储过程的特权,过程创建者默认拥有这个特权,MySQL 5.0新特性教程 存储过程:第四讲(12),3. Privileges SHOW ROU

2. Privileges EXECUTE

GRANT EXECUTE ON p TO peter
[WITH GRANT OPTION];


  上面的特权是决定你是否可以使用或执行存储过程的特权,过程创建者默认拥有这个特权。

3. Privileges SHOW ROUTINE?

GRANT SHOW ROUTINE ON db6.* TO joey
[WITH GRANT OPTION];


  因为我们已经有控制视图的特权了:GRANT SHOW VIEW。所以在这个基础上,为了保证兼容,日后可能会添加GRANT SHOW ROUTINE特权。这样做是不太符合标准的,在写本书的时候,MySQL(和PHP搭配之最佳组合)还没实现这个功能。

4. Privileges Invokers and Definers 特权调用者和定义者

CREATE PROCEDURE p26 ()
SQL SECURITY INVOKER
SELECT COUNT(*) FROM t //
CREATE PROCEDURE p27 ()
SQL SECURITY DEFINER
SELECT COUNT(*) FROM t //
GRANT INSERT ON db5.* TO peter; //


  现在我们测试一下SQL SECURITY子句吧。Security是我们前面提到的程序特性的一部分。你root用户,将插入权赋给了peter。然后使用peter登陆进行新的工作,我们看peter可以怎么使用存储过程,注意:peter没有对表t的select权力,只有root用户有。

5. Privileges Invokers and Definers

/* Logged on with current_user = peter */使用帐户peter登陆

MySQL(和PHP搭配之最佳组合)> CALL p26();
ERROR 1142 (42000): select command denied to user
'peter'@'localhost' for table 't'
MySQL(和PHP搭配之最佳组合)> CALL p27();
+----------+
| COUNT(*) |
+----------+
| 1 |
+----------+
1 row in set (0.00 sec)


  当peter尝试调用含有调用保密措施的过程p26时会失败。那是因为peter没有对表的select的权力。

  但是当petre调用含有定义保密措施的过程时就能成功。原因是root有select权力,Peter有root的权力,因此过程可以执行。

上一页  7 8 9 10 11 12 

Tags:MySQL 特性 教程

编辑录入:coldstar [复制链接] [打 印]
[]
  • 好
  • 好的评价 如果觉得好,就请您
      0%(0)
  • 差
  • 差的评价 如果觉得差,就请您
      0%(0)
赞助商链接