mysql - MySQL - 嵌套存储过程是否使用调用定义器作为调用者?
问题描述
当存储过程 A (SPA) 使用 DEFINER 安全性,但调用使用 INVOKER 安全性的存储过程 B (SPB) 时,存储过程 B 是否根据调用 SP 的 DEFINER 访问或原始 INVOKER/CURRENT_USER() 检查 INVOKER 访问?
解决方案
看来 MySQL 确实使用原始安全调用者作为嵌套调用的调用者。我执行了一些测试来检查上述内容,当 SPA 使用具有适当权限的 DEFINED 帐户时,它使用这些帐户凭据作为 SPB 中的 INVOKER(执行良好),但是当我使用仅具有的帐户调用 SPB 时(对于例如)EXECUTE 特权但不是 SELECT(并且 SPB 执行 SELECT)它失败。
因此,具有 DEFINER 安全性的 SP 将该 DEFINER 帐户作为 INVOKER 传递给任何嵌套的 SP。
推荐阅读
- sdn - 连接多个控制器 mininet
- php - 在 PHP 中使用 JSON 数组时获得额外的斜线
- android - 在 Android Studio 3.1.2 中找不到构建工具修订版
- audio - 将 2 个音频文件与 ffmpeg 中的视频合并
- html - 使用其他 HTML 编辑 HTML
- reactjs - 有没有办法在 redux 中重用 reducer 逻辑?
- android - 如何以编程方式在 Oreo 中创建 wifihotspot?
- android - 回收站视图中的动态网格布局
- php - 根据 td 文本禁用表格中的按钮
- crc - 通过模2二进制除法获得的余数与正常十进制除法获得的余数之间是否有任何关系?