1

我是数据库新手。我希望数据库中的更新仅通过存储过程发生。最终用户没有GRANT UPDATE一个GRANT EXECUTE ON PROCEDURE.

我以这种方式尝试过,但发现最终用户需要获得UPDATE许可。有没有其他方法可以实现这一目标?

4

1 回答 1

2

根据文档

任何对 p1 具有 EXECUTE 权限的用户都可以使用 CALL 语句调用它。但是,当 p1 执行时,它是在 DEFINER 安全上下文中执行的,因此以 'admin'@'localhost' 的权限执行,该帐户在 DEFINER 属性中命名。此帐户必须具有 p1 的 EXECUTE 权限以及表 t1 的 UPDATE 权限。否则,该过程将失败。

因此,您应该能够将 DEFINER 设置为授权用户帐户,并且只让您的最终用户能够执行该过程。

于 2012-09-11T16:32:16.077 回答