MySQL 存儲過程 函數 routine 權限


MySQL 存儲過程 函數 routine 權限

1 mysql存儲過程/函數權限

Mysql 某個用戶在執行存儲過程、函數時,需要檢查相關對象的操作權限,比如是否有執行 該函數的權限 ,某個用戶是否操作(DML)相關對象的權限 。

在創建存儲過程或者函數時,有一個關鍵詞,sql_security, 該關鍵詞決定了對哪個用戶進行權限檢查。下面是創建存儲過程或者函數的語法:

 

  • delimiter //    -- 聲明分隔符(命令結束符)
    
    create
    
      definer = user@hostname | current_user
    
      [procedure| function] 對象名(參數)
    
      comment '注釋'
    
      sql security definer | invoker   -- sql 的安全設置
    
    begin
    
       body
    
    end
    
    //
    
    delimiter ;    -- 聲明分隔符(命令結束符)

1.1 相關對象操作權限檢查

     sql_security 主要 是檢查調用 者或者definer指定的用戶,有沒有操作相關對象的權限 。 該選項有兩種值可選,一個是definer,一個是invoker.

  • DEFINER

    definer 檢查指定的用戶, 創建存儲過程時可以省略掉。省略時,默認DEFINER=CURRENT_USER.

    sql security 設置為definer時,則數據庫根據definer 是否有操作相應對象的權限 。

  • INVOKER

    檢查調用存儲過程/函數的用戶是否有操作相應對象的處理權限 。

1.2 執行權限

Mysql可以(取消)授權給指定用戶去執行某個存儲過程或者函數等。

  • 授權給指定用戶

    grant execute on <schema>.<procedure_name> to 'user'@'host';
    
  • 取消授權

    revoke  execute on <schema>.<procedure_name> from 'user'@'host';
    

Author: halberd.lee

Created: 2019-07-18 Thu 17:49

Validate


免責聲明!

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



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