mysql存储过程、视图等的权限问题

来源:互联网 发布:北京软件培训学校 编辑:程序博客网 时间:2024/05/01 20:05
看存储过程定义,
DELIMITER $$CREATE    /*[DEFINER = { user | CURRENT_USER }]*/    PROCEDURE `DB_U1`.`P1`()    /*LANGUAGE SQL    | [NOT] DETERMINISTIC    | { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }    | SQL SECURITY { DEFINER | INVOKER }    | COMMENT 'string'*/    BEGIN    XXX;    END$$DELIMITER ;
有个definer,指定存储过程属于哪个用户,SQL SECURITY指定了调用存储过程的方式,DEFINER 定义着(默认),INVOKER调用者
第一种,如果是以定义着身份执行,默认没问题,如果不是定义着,可以修改:
    update mysql.P1 set definer='root@localhost' where db='db_name';
第二种,如果是另外一个用户执行,需要满足两个条件:
    1,调用者具有调用存储过程的权限,2,存储过程拥有者本身具有执行存储过程的权限
第三种,修改存储过程的默认调用者权限,lter procedure P1 sql security invoker,或者创建过程时候指定

以上同样适用于视图,触发器,事件等
0 0
原创粉丝点击