MySQL定義數據庫對象之指定definer

mysql創建view、trigger、function、procedure、event時都會定義一個Definer:

SQL SECURITY 有兩個選項,一個為DEFINER,一個為INVOKER;SQL SECURITY { DEFINER | INVOKER } :指明誰有權限來執行。DEFINER 表示按定義者擁有的權限來執行;INVOKER 表示用調用者的權限來執行。默認情況下,系統指定為DEFINER??

以存儲過程為例:

(1)MySQL存儲過程是通過指定SQL SECURITY子句指定執行存儲過程的實際用戶;

(2)如果SQL SECURITY子句指定為DEFINER,存儲過程將使用存儲過程的DEFINER執行存儲過程,驗證調用存儲過程的用戶是否具有存儲過程的execute權限和DEFINER用戶是否具有存儲過程引用的相關對象的權限;

(3)如果SQL SECURITY子句指定為INVOKER,那么MySQL將使用當前調用存儲過程的用戶執行此過程,并驗證用戶是否具有存儲過程的execute權限和存儲過程引用的相關對象的權限;

(4)如果不顯示的指定SQL SECURITY子句,MySQL默認將以DEFINER執行存儲過程。

修改mysql中所有已經定義到的definer?

由于前期在測試庫上開發的緣故,我們經常定義到的definer為`root`@`%`,后來搬移到生產庫上又得改回來,存在著大量的更新,上百個的視圖,函數等一個個改不免太麻煩并且也可能遺漏。

如下為總結出的方便修改所有definer的方法,可以直到查漏補缺的作用。

1.修改function、procedure的definer

select definer from mysql.proc;? -- 函數、存儲過程

update mysql.proc set definer='user@localhost'; -- 如果有限定庫或其它可以加上where條件?

2.修改event的definer

select DEFINER from mysql.EVENT; -- 定時事件

update mysql.EVENT set definer=' user@localhost ';?

3.修改view的definer

相比function的修改麻煩點:

select DEFINER from information_schema.VIEWS;?

select concat("alter DEFINER=`user`@`localhost` SQL SECURITY DEFINER VIEW ",TABLE_SCHEMA,".",TABLE_NAME," as ",VIEW_DEFINITION,";") from information_schema.VIEWS where DEFINER<>'user@localhost';?

查詢出來的語句再執行一遍就好了。?

4.修改trigger的definer

目前還沒有具體方便的方法,可以借助工具端如HeidiSQL、sqlyog等來一個個修改。注意改前有必要鎖表,因為如果改的過程中有其它表改變而觸發,會造成數據不一致。

Flush tables with readlock

Unlock tables

轉載于:https://www.cnblogs.com/elontian/p/9122663.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/538533.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/538533.shtml
英文地址,請注明出處:http://en.pswp.cn/news/538533.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

js根據name獲取value_js 函數的重載

js 函數的重載我們知道&#xff0c;很多編程語言都有函數的重載。所謂的重載&#xff0c;看定義&#xff1a;重載&#xff0c;簡單說&#xff0c;就是函數或者方法有相同的名稱&#xff0c;但是參數列表不相同的情形&#xff0c;這樣的同名不同參數的函數或者方法之間&#xff…

python調用菜單響應事件_[Python] wxpython 編程觸發菜單或按鈕事件

最近逐步熟悉wxpython&#xff0c;編寫了幾個小小功能的GUI程序&#xff0c;GUI中免不了會有在代碼中觸發控件事件的業務需求。在其他Gui界面的語言中有postevent、triggerevent 調用事件名稱的函數&#xff0c;非常方便。在wxpython里如何解決呢&#xff0c;上一段簡單的代碼。…

Angular CLI 使用教程指南參考

原文鏈接&#xff1a;http://www.cnblogs.com/bh4lm/p/6638057.html 點擊閱讀原文 ----------------------------------------------- Angular CLI 使用教程指南參考 Angular CLI 現在雖然可以正常使用但仍然處于測試階段. Angular CLI 依賴 Node 4 和 NPM 3 或更高版本. 安裝…

存儲過程循環遍歷一個月的每一天的函數_JavaScript 循環:如何處理 async/await

同步循環很久以前我寫的循環是這樣的&#xff1a;后來 JavaScript 提供了很多新的特性&#xff0c;現在我們會更傾向于用下面這種寫法&#xff1a;在開發過程可能會有這么一種需求&#xff0c;我們需要在循環中異步處理 item&#xff0c;那么可以怎么做呢&#xff1f;異步循環如…

Angular程序架構

component&#xff0c;組件是Angular應用的基本構建塊&#xff0c;你可以把一個組件理解為一段帶有業務邏輯和數據的html。組件下面可以有子組件&#xff0c;子組件下有孫子組件&#xff0c;像樹一樣。指令&#xff1a;允許你向html元素添加自定義行為。模塊Ngmodule&#xff1…

sqllite能連接mysql_SQLLite 可以通過SQL語言來訪問的文件型SQL數據庫

Web Storage分為兩類&#xff1a;- sessionStorage&#xff1a;數據保存在session 對象中(臨時)- localStorage&#xff1a;數據保存在本地硬件設備中(永久)sessionStorage:保存數據的兩種方法&#xff1a;sessionStorage.setItem(key,val);sessionStorage.key val;讀取數據的…

迭代器模式(Iterator)

迭代器模式 一. 迭代器模式 1.1 定義 提供一種方法順序訪問一個集合對象中的各種元素&#xff0c;而又不暴露該對象的內部表示.1.2 角色 抽象迭代器接口&#xff08;Iterator&#xff09;.具體迭代器&#xff08;ConcreteIterator&#xff09;.抽象聚合接口&#xff08;Aggrega…

Angular啟動過程介紹

1、啟動時加載了哪個頁面&#xff1f;2、啟動時加載了哪些腳本&#xff1f;3、這些腳本做了什么事&#xff1f;打開Angular的命令行文件.angular-cli.json。apps節點下面。首先加載 index.html 頁面。此時瀏覽器顯示index.html的內容。再加載main.ts腳本"apps": [{..…

python解壓打開文件過多_在python中使用zipfile壓縮文件時層級很多,有很多層目錄...

如下圖本來只壓縮一個文件結果這個文件所在的路徑全都被壓縮進去啦下面是解決方法yadirD:/databak/zipfilepathD:/zipfile.zipfilelists os.listdir(yadi)if filelists None or len(filelists) print (">>>>>>待壓縮的文件目錄&#xff1a;" ya…

易語言python1.1模塊_易語言之編寫模塊與引入模塊

本人并不精通易語言&#xff0c;只是對其進行一定了解后做一個簡單的總結。直接新建一個易語言模塊&#xff0c;然后添加子程序即可。子程序當然可以隨意命名&#xff0c;實際上&#xff0c;易語言的子程序就和c語言的函數&#xff0c;java中的方法一樣(實際上&#xff0c;java…

spring boot開發筆記——mybatis

概述 mybatis框架的優點&#xff0c;就不用多說了&#xff0c;今天這邊干貨主要講mybatis的逆向工程&#xff0c;以及springboot的集成技巧&#xff0c;和分頁的使用 因為在日常的開發中&#xff0c;當碰到特殊需求之類會手動寫一下sql語句&#xff0c;大部分的時候完全可以用m…

Angular項目目錄介紹

通過 ng new 項目名生成的項目 一級目錄 Angular cli 工具生成的目錄文件名不要隨意修改&#xff0c;要不然會影響工具的使用。e2e&#xff1a;端到端的測試目錄&#xff0c;用來做自動測試的。node_modules&#xff1a;Angular第三方包。src&#xff1a;應用源代碼目錄&#…

jvm內存模型_四種視角看JVM內存模型

1.JVM運行視角程序計數器Java虛擬機棧本地方法棧Java堆方法區1 .程序計數器程序計數器是一塊較小的內存空間&#xff0c;它可以看作是當前線程所執行的行號指示器。這個計數器記錄的是正在執行的虛擬機字節碼指令的地址。此內存區域是唯一一個在JAVA虛擬機規范中沒有規定任何Ou…

linux mysql失敗_linux下登陸mysql失敗

標簽&#xff1a;一.提示由于沒有密碼&#xff0c;拒絕登陸ERROR 1045 (28000): Access denied for user ‘root‘‘localhost‘ (using password: NO)1.關閉mysql# service mysqld stop2.屏蔽權限# mysqld_safe --skip-grant-table屏幕出現&#xff1a; Starting demo from ..…

Tomcat服務腳本

為什么80%的碼農都做不了架構師&#xff1f;>>> #!/bin/bash ### BEGIN INIT INFO # Provides: tomcat # Required-Start: $remote_fs $syslog # Required-Stop: $remote_fs $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # S…

Angular開發準備

cmd&#xff0c;進入項目文件下1、安裝jquerynpm install jquery --save。--save 安裝的同時&#xff0c;將信息寫入package.json中2、安裝bootstrapnpm installbootstrap--save。3、在.angular-cli.json中添加 jquery和bootstrap的引用在styles節點和scripts節點下加入。&quo…

python桌面開發吐血_想用java寫個桌面小demo,就布局都差點寫吐血了,學藝不精...

demo簡略需求項目背景很多文件重復存放&#xff0c;除了管理混亂&#xff0c;還會對患有強迫癥用戶的身心造成10000點的傷害...其實就是360云盤當時上傳了有上傳&#xff0c;造成很多重復的圖片視頻&#xff0c;前陣子360個人云盤“倒閉”&#xff0c;電腦日夜兼程&#xff0c;…

oracle 取當前日期時間的前一天前一小時前一分鐘前一秒

原文鏈接&#xff1a;http://wentao365.iteye.com/blog/779492 點擊閱讀原文 --------------------------------------------------------------------------- SELECT 當前時間 TITLE, TO_CHAR(SYSDATE, yyyy-mm-dd hh24:mi:ss) TIME FROM DUAL --當前時間 UNION ALL S…

mysql8事務級別_Mysql幾種事務隔離級別

前言&#xff1a;之前對mysql的基礎知識通過了幾篇博客進行了一個詳解&#xff0c;包括從數據庫系統的原理以及最基本的操作使用&#xff0c;此篇博客將主要對mysql的事務級別進行實戰分析1.什么是事務&#xff1f;事務是應用程序中一系列嚴密的操作&#xff0c;所有操作必須成…

控制臺應用和空項目有什么區別_互聯網小程序的應用以及APP的應用有什么區別及發展...

隨時移動互聯網進入的千家萬戶&#xff0c;互聯網的手機應用程序也漸漸的在市場上流行起來了。今天主要跟大家談一下互聯網小程序的應用以及APP的應用有什么區別以及未來的發展趨。未來會流行什么手機應用或者APP應用&#xff0c;我帶大家都為了解一下。下邊先來了解一下小程序…