向另一个用户

时间:2018-06-09 20:16:31

标签: mysql stored-procedures grant database-permissions

我有一个数据库函数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命令;请咨询   手动查看可以使用的权限

1 个答案:

答案 0 :(得分:2)

您必须在torch.bmm上使用grant execute(方法2):

function

正如OP的评论中所解释的那样,用户有一个拼写错误,它应该是GRANT EXECUTE ON FUNCTION `db_name`.`fn_relation_isModerator` TO 'api_workers'@'%'; 而不是api_workers

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