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