Предоставить разрешение на выполнение функции другому пользователю - PullRequest
0 голосов
/ 09 июня 2018

У меня есть функция базы данных 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 голосов
/ 09 июня 2018

Вы должны использовать грант выполнить для function (Подход 2):

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

Как поясняется в комментариях OP, в пользователе была опечатка, вместо нее должно быть api_workersиз api_worker.

Все подходы не выполнены из-за использования несуществующего пользователя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...