MySQL 存储过程 函数 routine 权限
Table of Contents
1 mysql存储过程/函数权限
Mysql 某个用户在执行存储过程、函数时,须要检查相关对象的操做权限,好比是否有执行 该函数的权限 ,某个用户是否操做(DML)相关对象的权限 。html
1.1 相关对象操做权限检查
sql_security 主要 是检查调用 者或者definer指定的用户,有没有操做相关对象的权限 。 该选项有两种值可选,一个是definer,一个是invoker.java
-
DEFINERpython
definer 检查指定的用户, 建立存储过程时能够省略掉。省略时,默认DEFINER=CURRENT_USER.mysql
sql security 设置为definer时,则数据库根据definer 是否有操做相应对象的权限 。sql
-
INVOKERshell
检查调用存储过程/函数的用户是否有操做相应对象的处理权限 。数据库
-
示例sass
delimiter // -- 声明分隔符(命令结束符) create definer = user@hostname | current_user [procedure| function] 对象名(参数) comment '注释' sql security definer | invoker -- sql 的安全设置 begin body end // delimiter ; -- 声明分隔符(命令结束符)
1.2 执行权限
Mysql能够(取消)受权给指定用户去执行某个存储过程或者函数等。安全
-
受权给指定用户
grant execute on <schema>.<procedure_name> to 'user'@'host';
-
取消受权
revoke execute on <schema>.<procedure_name> from 'user'@'host';