在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='leiming@127.0.0.1';
然后修改Security_type字段,代碼如下:
mysql> update mysql.proc set Security_type='INVOKER'; //Vevb.com
這里這里我們是修改的所有的存儲過程,當然你要修改你對應的那個存儲過程,只需要加上where條件即可.
新聞熱點
疑難解答