mysql存储过程的权限 definer
2018-03-13 14:08
260 查看
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 存储过程名 ……..
测试存储过程
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 存储过程的权限问题 java.sql.SQLException: The user specified as a definer ('xxxx'@'%') does not exist
- mysql存储过程的权限 definer
- mysql+asp.net开发注意大全:mysql创建数据库的时候,创建新用户,并且付给权限。mysql存储过程的编写,mysql数据库引擎的区别,mysql数据库文件夹备份
- MySQL 用户执行存储过程的权限
- MySQL存储过程权限
- JDBC连接执行 MySQL 存储过程报权限错误:User does not have access to metadata required to determine stored procedure parameter types. If rights can not be granted,
- 关于mysql存储过程的definer的问题
- MySQL 授权用户 ; 存储过程的DEFINER; 命令分隔符DELIMITER
- mysql存储过程执行权限问题
- MySQL的备份与还原与索引、视图、存储过程与权限
- 关于mysql存储过程的definer的问题
- 关于mysql存储过程的definer的问题1
- 关于mysql的存储过程的使用权限的实验及思考
- mysql 获取所有用户所有权限存储过程
- mysql创建存储过程权限问题
- (原)mysql存储过程的权限 definer invoker
- (原)mysql存储过程的权限 definer invoker
- MySQL-存储过程权限报错
- 关于mysql存储过程的definer的问题
- java调用mysql存储过程报权限方面错误