MySQL 存儲過程 函數 routine 權限
Table of Contents
1 mysql存儲過程/函數權限
Mysql 某個用戶在執行存儲過程、函數時,須要檢查相關對象的操做權限,好比是否有執行 該函數的權限 ,某個用戶是否操做(DML)相關對象的權限 。html
1.1 相關對象操做權限檢查
sql_security 主要 是檢查調用 者或者definer指定的用戶,有沒有操做相關對象的權限 。 該選項有兩種值可選,一個是definer,一個是invoker.java
-
DEFINERpython
definer 檢查指定的用戶, 建立存儲過程時能夠省略掉。省略時,默認DEFINER=CURRENT_USER.mysql
sql security 設置爲definer時,則數據庫根據definer 是否有操做相應對象的權限 。sql
-
INVOKERshell
檢查調用存儲過程/函數的用戶是否有操做相應對象的處理權限 。數據庫
-
示例sass
delimiter // -- 聲明分隔符(命令結束符) create definer = user@hostname | current_user [procedure| function] 對象名(參數) comment '註釋' sql security definer | invoker -- sql 的安全設置 begin body end // delimiter ; -- 聲明分隔符(命令結束符)
1.2 執行權限
Mysql能夠(取消)受權給指定用戶去執行某個存儲過程或者函數等。安全
-
受權給指定用戶
grant execute on <schema>.<procedure_name> to 'user'@'host';
-
取消受權
revoke execute on <schema>.<procedure_name> from 'user'@'host';