mysql建立儲存過程許可權問題

2021-09-08 03:38:22 字數 787 閱讀 9362

首先,在mysql儲存過程出現的同時,使用者許可權也增加了5種,其中和儲存過程有關的許可權有 三種: 

alter routine 編輯或刪除儲存過程

create routine 建立儲存過程

execute 執行儲存過程

在使用grant建立使用者的時候分配這三種許可權。 儲存過程在執行的時候預設是使用建立者的許可權執行的。

需要注意的是在乙個使用者擁有建立儲存過程的許可權時,如果其沒有對於select、update或delete等許可權的話,雖然運算元據的儲存過程可以建立,但呼叫儲存過程的話仍是無法成功的,會返回許可權錯誤,就算擁有執行儲存過程的許可權也一樣。所以,如果有人給你建立了乙個沒有select、update、delete許可權只有create routine許可權的使用者,罵他吧,他是故意的。

當然這樣的使用者建立的儲存過程倒並不是完全不能使用,建立儲存過程中有乙個特徵子句可以讓儲存過程使用執行者的許可權,在建立儲存過程後只要加上sql security invoker特徵子句就可以了。如下。 create procedure p() sql security invoker 這樣的話就可以分配兩批人,一批給與建立儲存過程的許可權,作為開發者,一批給與執行儲存過程和select、update、delete許可權,作為測試者。(腦筋秀逗了) 有了這種許可權分配,mysql的安全性完全不需要在功能層去保護了,我通過root使用者建立的儲存過程,但是在功能層用乙個只擁有執行儲存過程許可權的使用者來呼叫。那麼,你就算從功能層上得到資料庫的使用者名稱和密碼,並且模擬了ip,也不能得到你想要的任何東西。 有了許可權,我們可以放心大膽的使用儲存過程,不用擔心安全問題了。

MySQL建立儲存過程有關問題

deterministic 無法確定 no sql 沒有sql語句,無法修改資料 reads sql data 只能讀取資料,無法修改資料 modifies sql data 要修改資料 contains sql 包含了sql語句 方法一 在mysql查詢中啟用引數 set global log b...

MySQL函式和儲存過程許可權問題

create definer root functionsql security 建立函式或者儲存過程的時候,sql secuirty的值決定了呼叫儲存過程的方式,取值 definer或者invoker definer 在執行儲存過程前驗證definer對應的使用者如 root 192.168.2....

mysql儲存過程問題 MySQL儲存過程

儲存過程是一組為了完成特定功能的 sql 語句集合。使用儲存過程的目的是將常用或複雜的工作預先用 sql 語句寫好並用乙個指定名稱儲存起來,這個過程經編譯和優化後儲存在資料庫伺服器中,因此稱為儲存過程。當以後需要資料庫提供與已定義好的儲存過程的功能相同的服務時,只需呼叫 call儲存過程名字 即可自...