我有一个数据库函数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_relation_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。非法GRANT / REVOKE命令;请咨询 手动查看可以使用的权限
答案 0 :(得分:2)
您必须在torch.bmm
上使用grant execute(方法2):
function
正如OP的评论中所解释的那样,用户有一个拼写错误,它应该是GRANT EXECUTE ON FUNCTION `db_name`.`fn_relation_isModerator` TO 'api_workers'@'%';
而不是api_workers
。
由于使用不存在的用户,所有方法都失败了。