簡體   English   中英

允許非SELECT權限的用戶運行具有SELECT查詢的MySQL存儲過程

[英]Allow non-SELECT permission user to run MySQL stored procedure which has SELECT query

我有兩個MySQL用戶:

  • mysql_user_1
  • mysql_user_2(僅EXECUTE權限)

mysql_user_1創建了一個存儲過程getRecord(int uid_of_record) ,該存儲過程運行SELECT * FROM TABLE WHERE uid=? mysql_user_2可以在沒有SELECT特權的情況下執行該存儲過程?

這在MySQL文檔“存儲程序和視圖的訪問控制”中有詳細解釋。

可以使用以下任一方法定義存儲過程:

SQL SECURITY DEFINER

要么

SQL SECURITY INVOKER

如果是DEFINER ,則該過程將在定義該過程的用戶的權限下執行; 在您的情況下,如果mysql_user_1具有SELECT特權,則該過程適用於mysql_user_2

如果是INVOKER ,則該過程將在運行該過程的用戶的權限下執行。 在這種情況下,該過程不適用於mysql_user_2

如果過程中沒有此子句,則默認為DEFINER

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM