Подтвердить что ты не робот

Разрешения хранимой процедуры MySQL

Я пытаюсь предоставить пользователю право запускать хранимую процедуру на уровне хранимой процедуры в базе данных MySQL, а не позволять пользователю выполнять любую хранимую процедуру в базе данных. Я пытался выполнить следующий код:

GRANT EXECUTE ON myDB.spName TO 'TestUser'@'localhost';

Но я продолжаю получать следующую ошибку:

Illegal GRANT/REVOKE command, please consult the manual to see which privileges can be used.

Я попытался изменить его на следующее:

GRANT EXECUTE ON PROCEDURE myDB.spName TO 'TestUser'@'localhost';

И я получаю другую ошибку, заявляя:

Cant find any matching rows in the user table.

Я смущен, когда я ошибаюсь?

Кроме того, в Workbench MySQL я не вижу способа предоставить разрешения на уровне хранимой процедуры через графический интерфейс. Это правильно или я что-то не хватает?

Спасибо заранее.

4b9b3361

Ответ 1

Ваша вторая попытка - правильный подход:

GRANT EXECUTE ON PROCEDURE myDB.spName TO 'TestUser'@'localhost';

но если это не работает, проверьте...

а) вы (пользователь, от имени которого вы запускаете все эти команды) имеете права на предоставление [т.е. с опцией предоставления]. Если вы root, значит, у вас есть права.

b) существует пользователь, которому вы предоставляете разрешение на выполнение, например

 select user from mysql.user where user  like  'test%';

Если нет, то создайте пользователя, например

CREATE USER 'TestUser'@'localhost' IDENTIFIED BY 'passwordxxxx';
#depending on your needs
GRANT SELECT,DELETE,UPDATE PRIVILEGES ON myDb.* TO 'TestUser'@'localhost'; 

Надеюсь это поможет :)

Ответ 2

Чтобы ответить на другую часть вашего вопроса относительно MySQL Workbench, у меня была такая же проблема. Но после эксперимента я обнаружил, что если вы создадите роль и откройте вкладку привилегий внизу, вы можете перетащить эту процедуру из Обзор модели в поле объектов. Оттуда просто нажмите на вновь добавленный объект и добавьте разрешения, которые вы хотите для этой роли.

Надеюсь, что это поможет:)