文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>mysql存储过程的相关权限

mysql存储过程的相关权限

时间:2009-05-22  来源:sss0213

 mysql的存储过程也出来许久了(昨天看到一片今年一月的一片文章说mysql没有存储过程,很郁闷,难道大家的观念已经根深蒂固到如此的程度了?)但是网上的资料却少之又少,更别说书上了。为了让大家少走点弯路——
  下面提到的将是几个在使用存储过程的时候需要的几个小细节。
  首先,在mysql存储过程出现的同时,用户权限也增加了5种,其中和存储过程有关的权限有
  三种:
  ALTER ROUTINE 编辑或删除存储过程
  CREATE ROUTINE 建立存储过程
  EXECUTE 运行存储过程
  在使用GRANT创建用户的时候分配这三种权限。
  存储过程在运行的时候默认是使用建立者的权限运行的。
   需要注意的是在一个用户拥有建立存储过程的权限时,如果其没有对于select、update或delete等权限的话,虽然操作数据的存储过程可以建 立,但调用存储过程的话仍是无法成功的,会返回权限错误,就算拥有运行存储过程的权限也一样。所以,如果有人给你建立了一个没有select、 update、delete权限只有CREATE ROUTINE权限的用户,骂他吧,他是故意的。
  当然这样的用户建立的存储过程倒并不是完全不能使用,创建存储过程中有一个特征子句可以让存储过程使用运行者的权限,在建立存储过程后只要加上SQL SECURITY INVOKER特征子句就可以了。如下。
  CREATE PROCEDURE p()
  SQL SECURITY INVOKER
  这样的话就可以分配两批人,一批给与创建存储过程的权限,作为开发者,一批给与运行存储过程和select、update、delete权限,作为测试者。(脑筋秀逗了)
  有了这种权限分配,mysql的安全性完全不需要在功能层去保护了,我通过root用户建立的存储过程,但是在功能层用一个只拥有运行存储过程权限的用户来调用。那么,你就算从功能层上得到数据库的用户名和密码,并且模拟了ip,也不能得到你想要的任何东西。
  有了权限,我们可以放心大胆的使用存储过程,不用担心安全问题了。
 
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载