mysql存储过程的权限 definer
mysql中用户对存储过程的权限有:
ALTER ROUTINE 编辑或删除存储过程
CREATE ROUTINE 创建存储过程
EXECUTE运行存储过程
存储过程的创建者拥有存储过程的ALTER、CREATE、EXECUTE权限。
详细实验后续补充。
DEFINER用于指明存储过程是由哪个用户定义的,默认存储过程的定义者是存储过程,跟存储过程的使用权限无关。
INVOKER用于指定哪些用户有调用存储过程的权限,此时会以调用者的权限去执行存储过程。
默认情况下被执行的存储过程具有其创建者的权限,比如用户A创建了存储过程P1,用户B运行存储过程P1时,只有用户A有操作权限的数据才能被P1操作。
假设用户A只有CREATE
ROUTINE权限,没有select、update、delete等权限,正常情况下存储过程P1不能执行任何操作。如果在创建存储过程P1时,使用
SQL SECURITY INVOKER特征子句,让存储过程使用运行者的权限,这样即使P1的创建者没有数据操作权限,P1也可以正常使用。
如果在创建存储过程时指定为root@%,将有可能导致root@localhost在使用存储过程时出现权限问题。
相关操作方法:
查看存储过程的创建语句:
show create procedure 存储过程名;
查看存储过程的信息:
show procedure status like '存储过程名'\G
查看存储过程的Definer信息:
select db,name,type,definer from mysql.proc where name='存储过程名' and type='PROCEDURE';
创建存储过程时指定definer字段:
CREATE
DEFINER = ‘root@localhost’ -- 默认值
PROCEDURE 存储过程名 ........
测试存储过程
delimiter $
create procedure p_t1(in id int)
begin
insert into mysql.t2 values(id,'a');
select count(*) from mysql.t2;
end
$
delimiter ;
mysql存储过程的权限 definer的更多相关文章
- mysql存储过程执行权限问题
tags: mysql PROCEDURE 存储过程 definer SECURITY 权限 以下存储过程,限定了DEFINER为root,也就是root之外的账户是无法调用这个存储过程的. 1 2 ...
- JDBC连接执行MySQL存储过程报权限错误
今天在测试项目的时候 突然就报了一个错出来. User does not have access to metadata required to determine stored procedure ...
- JDBC连接执行 MySQL 存储过程报权限错误:User does not have access to metadata required to determine stored procedure parameter types. If rights can not be granted,
国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html 内部邀请码:C8E245J (不写邀请码,没有现金送) 国 ...
- JDBC连接执行mysql存储过程报权限错误:User does not have access to metadata required to determine stored procedure parameter types. If rights can not be granted,
分析:JDBC在调用存储过程时不光用户要有execute的权限,还需要对mysql.proc具有访问权限.否则它无法访问metadata 解决方案:给数据库用户赋权,赋执行mysql.proc表的se ...
- MySQL 存储过程 函数 routine 权限
MySQL 存储过程 函数 routine 权限 Table of Contents 1. mysql存储过程/函数权限 1.1. 相关对象操作权限检查 1.2. 执行权限 1 mysql存储过程/函 ...
- JDBC使用MySQL存储过程错误
JDBC连接执行 MySQL 存储过程报权限错误:User does not have access to metadata required to determine stored procedur ...
- 关于mysql存储过程的definer的问题
由于对mysql了解不够透彻,导致对definer问题查了好久才解决问题 记录自己的一些理解! 问题描述: 在数据库写,为一个表写了一个触发器,此触发器调用一个存储过程:由公司写的一个c程序自动往该表 ...
- MySQL存储过程权限分析
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://huanghualiang.blog.51cto.com/6782683/1216 ...
- Mysql 存储过程、函数、触发器和视图的权限检查
当存储过程.函数.触发器和视图创建后,不单单创建者要执行,其它用户也可能需要执行,换句话说,执行者有可能不是创建者本身,那么在执行存储过程时,MySQL是如何做权限检查的? 在默认情况下,MySQL将 ...
随机推荐
- IGeometry 中取指定的点
private static IGeometryCollection MakeMultiPoint(IGeometry geometry,int pointcount) { IGeo ...
- QT5.7.0在win10下使用visual studio 2015编译(目标平台 xp)
环境:win10+vs2015+QT5.7.0 目标:编译出能在windows xp上运行的QT 通过baidu和bing找出来的结果没有一个能成功运行,大部分都能编译成功,并完美解决“exe不是有效 ...
- Spring与SpringMVC的容器关系分析
Spring和SpringMVC作为Bean管理容器和MVC层的默认框架,已被众多WEB应用采用,而实际使用时,由于有了强大的注解功能,很多基于XML的配置方式已经被替代,但是在实际项目中,同时配置S ...
- 网络协议- HTTP
http:是用于www浏览的一个协议.tcp:是机器之间建立连接用的到的一个协议.
- Freemarker数字转时间
使用freemarker模板,展示一个时间字段,数据库保存的是毫秒.在网上找了许多文章,发现都是针对date或者是直接类似"1999-09-09"这样已经成型字符串进行操作的,心中 ...
- python urllib2详解及实例
urllib2是Python的一个获取URLs(Uniform Resource Locators)的组件.他以urlopen函数的形式提供了一个非常简单的接口, 这是具有利用不同协议获取URLs的能 ...
- 字符串的encode与decode解决乱码问题
!/usr/bin/env python coding=utf-8 s="中文" if isinstance(s, unicode): s=u"中文" prin ...
- readmine项目管理和缺陷跟踪工具
官方网站:http://www.redmine.org/演示地址:http://demo.redmine.org/下载地址:http://www.redmine.org/projects/redmin ...
- Android网络框架---OkHttp3
1.添加依赖 compile 'com.squareup.okhttp3:okhttp:3.4.2' project Structure-->dependencied/搜索okhttp. com ...
- spring mvc使用ClassPathXmlApplicationContext或FileSystemXmlApplicationContext和XmlWebApplicationContext类的操作其中 XmlWebApplicationContext是专为Web工程定制的。
一.简单的用ApplicationContext做测试的话,获得Spring中定义的Bean实例(对象).可以用: ApplicationContext ac = new ClassPathXmlAp ...