今天測試項目時,連接遠程Mysql數據庫項目正常運行,把遠程數據庫拷貝到本地數據庫,項目無法登陸,一直考慮是同步數據庫出了問題。確認幾遍后發現數據沒問題。最后發現是某條sql出現問題指定定義者的用戶不存在。而該sql中調用了視圖,最后才發現是視圖權限問題,運行sql報The user ...
現象:在數據庫遷移之后,調用函數報錯,提示definer不存在。 查了一下,發現函數和存儲過程之類的,本身調用是不存在權限這個概念的。 definer這個值並不會限制函數和存儲過程被調用的權限,但會限制函數和存儲過程訪問數據庫的權限。 函數和存儲過程在訪問數據庫時,會獲取definer用戶對應的數據庫訪問權限。 因為在遷庫后,definer值沒有修改,原數據庫的用戶在新庫中不存在,所以報錯,修改一 ...
2018-02-02 18:11 0 5648 推薦指數:
今天測試項目時,連接遠程Mysql數據庫項目正常運行,把遠程數據庫拷貝到本地數據庫,項目無法登陸,一直考慮是同步數據庫出了問題。確認幾遍后發現數據沒問題。最后發現是某條sql出現問題指定定義者的用戶不存在。而該sql中調用了視圖,最后才發現是視圖權限問題,運行sql報The user ...
我常用的工具是navicat,但是修改definer不能用工具,只能用命令行; 數據庫遷移到其他服務器上,會報definer錯誤,修改view的definer方法如下(比如把definer改為本地的,要加上select語句): 第一種方法: alter DEFINER = 'root ...
修改mysql中所有已經定義到的definer? 由於前期在測試庫上開發的緣故,我們經常定義到的definer為`root`@`%`,后來搬移到生產庫上又得改回來,存在着大量的更新,上百個的視圖,函數等一個個改不免太麻煩並且也可能遺漏。如下為總結出的方便修改所有definer的方法,可以直到查漏 ...
mysql中的definer是什么,有什么作用? 我們在mysql創建view、trigger、function、procedure、event時都會定義一個Definer=‘xxx’,類似如下: 加紅的部分SQL SECURITY 其實后面有兩個選項,一個 ...
背景 最近往現場導了個庫,發現功能報錯,一看是視圖報錯,navicat一看,哎呦,直接報錯。The user specified as a definer ('root'@'%') does not exist。 解決辦法 因為視圖的人在創建的時候 他選擇了定義者才能執行。於是當你切換 ...
最近導了個庫,發現功能報錯,一看是視圖報錯,navicat一看,哎呦,直接報錯。The user specified as a definer ('root'@'%') does not exist。 解決辦法 因為視圖的人在創建的時候 解決辦法1 如果你只有當前用戶 ...
前言: 在 MySQL 數據庫中,在創建視圖及函數的時候,你有注意過 definer 選項嗎?在遷移視圖或函數后是否有過報錯情況,這些其實都可能和 definer 有關系。本篇文章主要介紹下 MySQL 中 definer 的含義及作用。 1.DEFINER簡單介紹 以視圖為例,我們來看下 ...
-- 函數、存儲過程 select definer from mysql.proc; update mysql.proc set definer='billing@%'; -- 定時事件 select DEFINER from mysql ...