Как предоставить привилегии пользователю внутри хранимой процедуры в MySQL? - PullRequest
0 голосов
/ 02 июня 2018

Я хочу создать несколько хранимых процедур в моей базе данных MySQL и использовать их для предоставления привилегий пользователям (вид реализации ролей).Например, я хочу, чтобы процедуры admin1 (), admin2 (), user_type1 (), user_type2 () передавали имена пользователей и предоставляли привилегии.

Это пример функции:

DELIMITER //
CREATE PROCEDURE grant_rights
(IN user varchar(100))
BEGIN
   grant update on Table2 to user;
END //
DELIMITER ;

Затем я называю это так:

mysql> call grant_rights('newuser1');

До этого я пытался создать newuser1 несколькими способами (с кавычками или без):

create user 'newuser1' identified by 'root';
create user newuser1 identified by 'root';

или

create user 'newuser1'@'localhost' identified by 'root';

В любом случае, когда я предоставляю права следующим образом:

grant update on Table2 to 'newuser1';

все работает нормально, но при вызове процедуры (как показано выше) я всегда получаю сообщение об ошибке:

ERROR 1133 (42000): Can't find any matching row in the user table

Как правильно решить эту проблему?Как мне создать пользователя, передать его процедуре и использовать там?

...