在MySQL中,存儲(chǔ)過(guò)程是一種預(yù)先定義好的具有一定邏輯的SQL代碼塊,可以重復(fù)運(yùn)行而不用每次輸入SQL語(yǔ)句。為了執(zhí)行存儲(chǔ)過(guò)程,需要對(duì)其進(jìn)行授權(quán)。
GRANT EXECUTE ON PROCEDURE database.procedure_name TO 'username'@'localhost';
以上代碼中,EXECUTE關(guān)鍵字指定只授予執(zhí)行存儲(chǔ)過(guò)程權(quán)限,而非對(duì)存儲(chǔ)過(guò)程進(jìn)行修改或刪除的權(quán)限。
PROCEDURE關(guān)鍵字指定要授權(quán)的對(duì)象為存儲(chǔ)過(guò)程。
database和procedure_name分別代表存儲(chǔ)過(guò)程所在的數(shù)據(jù)庫(kù)和存儲(chǔ)過(guò)程名稱。
最后,'username'@'localhost'指定了進(jìn)行授權(quán)的用戶和主機(jī)。
在授權(quán)執(zhí)行存儲(chǔ)過(guò)程后,用戶可以使用CALL語(yǔ)句執(zhí)行存儲(chǔ)過(guò)程。
CALL database.procedure_name();
使用以上語(yǔ)句,就可以在授權(quán)用戶的權(quán)限范圍內(nèi),執(zhí)行指定數(shù)據(jù)庫(kù)中的存儲(chǔ)過(guò)程。