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.mzph.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;我带大家都为了解一下。下边先来了解一下小程序…