mysql儲存過程、檢視等的許可權問題
阿新 • • 發佈:2019-01-30
看儲存過程定義,
第一種,如果是以定義著身份執行,預設沒問題,如果不是定義著,可以修改:
update mysql.P1 set definer='[email protected]' where db='db_name';
第二種,如果是另外一個使用者執行,需要滿足兩個條件:
1,呼叫者具有呼叫儲存過程的許可權,2,儲存過程擁有者本身具有執行儲存過程的許可權
第三種,修改儲存過程的預設呼叫者許可權,lter procedure P1 sql security invoker,或者建立過程時候指定
以上同樣適用於檢視,觸發器,事件等
有個definer,指定儲存過程屬於哪個使用者,SQL SECURITY指定了呼叫儲存過程的方式,DEFINER 定義著(預設),INVOKER呼叫者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 ;
第一種,如果是以定義著身份執行,預設沒問題,如果不是定義著,可以修改:
update mysql.P1 set definer='[email protected]' where db='db_name';
第二種,如果是另外一個使用者執行,需要滿足兩個條件:
1,呼叫者具有呼叫儲存過程的許可權,2,儲存過程擁有者本身具有執行儲存過程的許可權
第三種,修改儲存過程的預設呼叫者許可權,lter procedure P1 sql security invoker,或者建立過程時候指定
以上同樣適用於檢視,觸發器,事件等