mySql中The user specified as a definer ('root'@'%') does not exist


背景

最近往現場導了個庫,發現功能報錯,一看是視圖報錯,navicat一看,哎呦,直接報錯。The user specified as a definer ('root'@'%') does not exist。

解決辦法

因為視圖的人在創建的時候

他選擇了定義者才能執行。於是當你切換到其他用戶當然不行啦。

解決辦法1

如果你只有當前用戶,你沒有root用戶的密碼,建議你刪除當前視圖,復制好語句,重新建立。

解決辦法2

如果你有高級用戶的權限輸入命令

grant all privileges on *.* to root@"%" identified by ".";
flush privileges;

將root換成你要授權的用戶。

解決辦法3

將范圍改成

補充一點

針對於視圖的安全性補充一下。

definer

當定義為DEFINER時,必須數據庫中存在DEFINER指定的用戶,並且該用戶擁有對應的操作權限,才能成功執行。與當前用戶是否有權限無關。

invoker

當定義為INVOKER時,只要執行者有執行權限,就可以成功執行。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM