1. 程式人生 > >mysql儲存過程、檢視等的許可權問題

mysql儲存過程、檢視等的許可權問題

看儲存過程定義,
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='[email protected]' where db='db_name';
第二種,如果是另外一個使用者執行,需要滿足兩個條件:
    1,呼叫者具有呼叫儲存過程的許可權,2,儲存過程擁有者本身具有執行儲存過程的許可權
第三種,修改儲存過程的預設呼叫者許可權,lter procedure P1 sql security invoker,或者建立過程時候指定

以上同樣適用於檢視,觸發器,事件等