mysql 執行存儲過程權限問題


若定義了如下存儲過程:

/* Procedure structure for procedure `test_add_task` */
/*!50003 DROP PROCEDURE IF EXISTS  `test_add_task` */;


DELIMITER $$
/*!50003 CREATE DEFINER=`root`@`%` PROCEDURE `test_add_task`(
    in_id int)


    #按調用者權限執行存儲過程
    SQL SECURITY INVOKER


BEGIN
    insert into test_task (id) values (in_id);
END */$$
DELIMITER ;

 

若不存在SQL SECURITY INVOKER語句,則mysql默認按存儲過程的定義者來執行存儲過程,也就是語句DEFINER=`root`@`%`指示的`root`@`%`用戶。

SQL SECURITY INVOKER語句的含義為:用調用此存儲過程的用戶執行此存儲過程。

ps.另有語句SQL SECURITY DEFINER,含義為按定義者執行。。。 額。 若連接數據庫是A用戶,B用戶為定義者,並存在更高的權限。。。那么。。。可能存在一定的安全隱患。  建議用:SQL SECURITY INVOKER


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM