У меня есть функция базы данных 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;пожалуйста, обратитесь к руководству, чтобы увидеть, какие привилегии могут быть использованы