在mysql中用戶對存儲過程的權限有:ALTER ROUTINE 編輯或刪除存儲過程,CREATE ROUTINE 創建存儲過程,EXECUTE運行存儲過程權限,下面我來給大家介紹一個我碰到的問題.
存儲過程的創建者擁有存儲過程的ALTER、CREATE、EXECUTE權限。
通過mysql導入的數據庫,當裡面有存儲過程的時候,導入後存儲過程是無法用程序使用了,找了很久原因,最後發現是權限問題。
1、我們要用查看數據庫裡面的存儲過程:在mysql裡面輸入
代碼如下 復制代碼mysql> show function status;
運行後的結果如圖所示:
2、修改對應存儲過程的Definer和Security_type這兩個字段的值
加入我們程序鏈接數據庫的帳戶是leiming,鏈接數據庫的地址是127.0.0.1
我們需要輸入
mysql> update mysql.proc set Definer='[email protected]';
然後修改Security_type字段:
代碼如下 復制代碼mysql> update mysql.proc set Security_type='INVOKER';
這裡這裡我們是修改的所有的存儲過程,當然你要修改你對應的那個存儲過程,只需要加上where條件即可。