2012-04-10 1 views
18

Я пытаюсь предоставить пользователю разрешение на выполнение хранимой процедуры на уровне хранимой процедуры в базе данных 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 я не вижу возможности предоставить разрешения на уровне хранимой процедуры через графический интерфейс. Это правильно или я что-то упускаю?

Заранее спасибо.

ответ

27

Ваша вторая попытка - это правильный путь вперед. E. г

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

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

а) вы (пользователь, из которого вы работаете все эти команды) имеют права гранта [т.е. WITH GRANT OPTION]. Если вы root, то его oky

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

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

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

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

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

+0

Im вошли в систему с правами администратора и пользователя существует при выполнении кода: выберите пользователя из mysql.user, где пользователь, как «тест%»; но я все еще, кажется, получаю те же ошибки. – Olly

+0

попробуйте добавить нового пользователя, как я предложил, и предоставить права на выполнение этого пользователя – sakhunzai

+2

еще одна попытка с паролем: 'GRANT EXECUTE ON PROCEDURE myDB.spName TO 'TestUser' @ 'localhost' , идентифицированный 'password';' – sakhunzai

1

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

Надежда, что помогает :)