在 MYSQL 中,是否可以将存储过程设置为在没有底层 SELECT 表权限的情况下使用?

In MYSQL, can a Stored Procedure be set up to be used without permissions to underlying SELECT tables?

我有一系列复杂的 SELECTS 和 JOINS 和 UNIONS,我经常使用它们并将它们放在存储过程中。我想要一个更安全的用户设置,它只能在这些存储过程中调用这些 SELECT 语句。似乎单独的 EXECUTE 权限不允许我执行包含 SELECT 语句的存储过程,但似乎我也无法在存储过程中授予 SELECT 权限而不授予整个 [=14] =].有没有办法在 MYSQL 中完成此操作,似乎在 SQL 服务器中可以,但我在 MYSQL 中找不到任何内容。我想授予在我的存储过程中执行所有内容的完全权限,但仅当通过我的存储过程调用时。

仅向特殊用户名授予表的 SELECT 权限。然后使该用户成为过程的定义者并在 CREATE PROCEDURE 语句中使用 SQL SECURITY DEFINER 选项。

授予普通用户 EXECUTE 程序权限(参见 https://dba.stackexchange.com/questions/97719/how-to-grant-execute-on-mysql)。

通过这些过程设置,当过程为 运行 时,它具有基于定义者的权限,允许它访问用户无法直接访问的表。

授予执行过程 mydb.myproc 到 'someuser'@'somehost';