The user specified as a definer ('wx_root'@'%') does not exist 解決方案

執筆記憶的空白發表於2016-04-14

今天專案優化過程中,mysql有個問題The user specified as a definer ('wx_root'@'%') does not exist


查了一下,意思是執行sql無許可權。  看了下資料庫使用者是quoters   而sql沒有所屬權。那就找原因了。發現sql執行過程中,呼叫了一個儲存過程

而這個儲存過程的建立者是wx_root 。 所以在執行的時候,quoters沒有許可權


解決方案和操作:

1、檢視儲存過程的所屬物件:  右鍵儲存過程函式——>選擇物件屬性——>檢視函式建立和所屬是不是當前登入的使用者

2、如果不是,備份原有的儲存過程函式,複製儲存過程函式裡面所有內容,新建一個儲存過程,命名跟原來一樣。

3、這樣建立者就是屬於當前登入使用者了。原來的函式可刪可留了(如果不確定,最好先保留)



另外還有其他原因可能導致這個錯誤,例如執行mysql檢視無許可權

檢視無許可權解決方案如下:

       The user specified as a definer ('root'@'%') does not exist。
  一般是由於root使用者對全域性host無訪問許可權。因此只要給root使用者新增一個訪問許可權即可。
  解決辦法:
  登陸mysql ,執行
  mysql -u root -pPasswd
  mysql >grant all privileges on *.* to root@"%" identified by "Passwd"
  mysql >flush privileges

相關文章