授予其他用户执行功能权限

Grant Execute Function permission to another user

我有一个数据库函数 fn_relation_isModerator,只有用户 api 可以访问这个函数。现在我想让另一个用户拥有这个权限(同时保持之前的权限).

我通过以下查询检查了例程名称和用户:

select routine_name, routine_type, definer from information_schema.ROUTINES where ROUTINE_SCHEMA = 'db_name';

结果:

+-------------------------+---------------+----------+
|      ROUTINE_NAME       |  ROUTINE_TYPE |  DEFINER |
+-------------------------+---------------+----------+
|                         |               |          |
| fn_relation_isModerator |  FUNCTION     |  api@%   |
+-------------------------+---------------+----------+

方法一:

所以我运行下面查询g运行t这个权限:

GRANT EXECUTE ON PROCEDURE db_name.fn_relation_isModerator TO 'api_worker'@'%';

但它导致了以下错误:

Error Code: 1305. PROCEDURE fn_relation_isModerator does not exist

方法二:

查询:

GRANT EXECUTE ON FUNCTION `db_name`.`fn_relation_isModerator` TO 'api_worker'@'%';

错误

Error Code: 1133. Can't find any matching row in the user table

方法三:

查询:

GRANT EXECUTE ON `db_name`.`fn_relation_isModerator` TO 'api_worker'@'%';

错误:

Error Code: 1144. Illegal GRANT/REVOKE command; please consult the manual to see which privileges can be used

您必须在 function(方法 2)上使用 grant execute:

GRANT EXECUTE ON FUNCTION `db_name`.`fn_relation_isModerator` TO 'api_workers'@'%';

正如 OP 在评论中所解释的那样,用户输入有误,应该是 api_workers 而不是 api_worker

由于使用了不存在的用户,所有方法都失败了。