MySQL笔记-definer与SQL SECURITY

procedure与function、trigger等创建时紧接着CREATE都有个definer可选项,该definer规定了访问该procedure等的安全控制。

一、DEFINER

如:创建procedure

《MySQL笔记-definer与SQL SECURITY》

说明:

上面示例指定definer为用户’admin’@’localhost’,所以任意用户A访问该PROCEDURE 时,能否成功取决于A是否有调用该PROCEDURE的权限,以及definer是否有procedure中的SELECT的权限。

二、SQL SECURITY

DEFINER默认为当前用户,也可指定其他用户。如果想通过访问者来判断是否具有访问该PROCEDURE 的权限,则可用SQL SECURITY指定。

《MySQL笔记-definer与SQL SECURITY》

说明:

该示例虽然指定了DEFINER ,但同时也指定了SQL SECURITY 类型为INVOKER ,SQL SECURITY 优先级高,所以安全类型为INVOKER,用户能否访问取决于用户是否有执行该PROCEDURE 的权限及该PROCEDURE 中的SELECT 权限(与select操作的表有关)。

当然,也可用SQL SECURITY 指定DEFINER:SQL SECURITY DEFINER

三、mysql.proc

关于procedure的信息,存储在mysql数据库的proc表中,可多了解mysql数据库中的更多表!

《MySQL笔记-definer与SQL SECURITY》

    原文作者:SQL
    原文地址: https://blog.csdn.net/qq_19865749/article/details/69662568
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞