mysql 執行儲存過程的許可權

2021-09-02 15:18:52 字數 649 閱讀 8664

在應用程式中呼叫儲存過程,出現如下錯誤資訊:

test_procedure executed failed because : driver requires declaration of procedure to either contain a '\nbegin' or '\n' to follow argument declaration, or select privilege on mysql.proc to parse column types.

這應該是由於mysql使用者許可權不足造成的。

根據上述提示,修改了mysql.proc表中test_procedure所對應記錄的definer欄位的值。

原值為root@localhost,後修改為當前使用的使用者myuser@%。這樣就沒問題了。

通過上述實驗,似乎說明某個儲存過程只能被自己的definer呼叫。

但我對此十分懷疑

又使用root@localhost建立了乙個簡單的儲存過程test_proc,然後使用myuser@localhost使用者call這個過程。

此時並沒有報許可權不足的問題

我可能對select privilege on mysql.proc to parse column types這句話沒有理解清楚。

請大家不吝指教!

**:

Oracle儲存過程執行許可權

預設情況下,在呼叫儲存過程使用者的角色是不起作用的,即在執行儲存過程時只有public許可權。所以如果被呼叫的儲存過程中如果有execute immediate create table.語句,將會引發ora 01031 insufficient privileges錯誤。儲存過程分為兩種,即dr ...

mysql儲存過程的許可權 definer

mysql中使用者對儲存過程的許可權有 alter routine 編輯或刪除儲存過程 create routine 建立儲存過程 execute執行儲存過程 儲存過程的建立者擁有儲存過程的alter create execute許可權。詳細實驗後續補充。definer用於指明儲存過程是由哪個使用者...

MYSQL儲存過程的越權執行

若使用root 使用者來建立乙個儲存過程 然後賦予另乙個使用者此儲存過程的執行許可權,則此使用者將可以進行一些root 賬號才可以進行的操作。但是這些操作是預先被定義在儲存過程裡面的。比如root 在test 資料庫建立了乙個讀取檔案的儲存過程readf 1 2 3 4 5 6 7 use test...