代码之家  ›  专栏  ›  技术社区  ›  Shaharyar

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

  •  2
  • Shaharyar  · 技术社区  · 6 年前

    我有数据库功能 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_relationship_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 回复  |  直到 6 年前
        1
  •  2
  •   Shaharyar    6 年前

    function

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

    api_workers api_worker