【definer和invoker的解釋】
創建存儲過程的時候可以指定 SQL SECURITY屬性,設置為 DEFINER 或者INVOKER,用來奉告MySQL在執行存儲過程的時候,,是以DEFINER用戶的權限來執行,還是以調用者*(invoker)的權限來執行。
默認情況下,使用DEFINER方式,此時調用存儲過程的用戶必須有存儲過程的EXECUTE權限,并且DEFINER指定的用戶必須是在mysql.user表中存在的用戶。
DEFINER模式下,默認DEFINER=CURRENT_USER,在存儲過程執行時,MySQL會檢查DEFINER定義的用戶'user_name'@'host_name'的權限;
INVOKER模式下,在存儲過程執行時,會檢查存儲過程調用者的權限。
等同于Oracle 中的 authid current_user
新聞熱點
疑難解答