向其他用户授予执行函数权限

iecba09b  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(370)

我有一个数据库功能 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@%   |
+-------------------------+---------------+----------+

方法1:
因此,我运行以下查询以授予此权限:

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

但它导致了以下错误:
错误代码:1305。过程fn\u关系\u ismoderator不存在
方法2:
查询:

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

错误
错误代码:1133。在用户表中找不到任何匹配的行
方法3:
查询:

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

错误:
错误代码:1144。非法授予/撤销命令;请参阅手册以了解可以使用哪些特权

rxztt3cl

rxztt3cl1#

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

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

正如op在评论中所解释的,用户输入有误,应该是 api_workers 而不是 api_worker .
由于使用了不存在的用户,所有方法都失败。

相关问题