Задавайте вопросы, мы ответим
Вы не зашли.
Добрый день, Товарищи!!
Есть задача сделать личный кабинет для каждого пользователя на сайте. Я решил сделать всё на процедурах и представлениях. Поэтому каждому пользователю необходимо раздать права. Возможно ли это сделать в процедуре? Имхо делать это ручками будет ужасно утомительно.
В результате вызова процедуры
DROP PROCEDURE IF EXISTS `my`.`get_rights`//
CREATE PROCEDURE `my`.`get_rights`(IN logg varchar(50))
BEGIN
CREATE USER `logg` IDENTIFIED BY '1234';
GRANT select on my.balance to `logg`;
END//
call my.get_rights('user1');
в таблице пользователей mysql.user и в таблице прав создаётся пользователь `logg` вместо `user1`.
Неактивен
Согласно документации ( http://dev.mysql.com/doc/refman/5.1/en/ … ments.html )
с версии MySQL 5.1.12 подготовленные выражения поддерживают команды CREATE USER и GRANT
Согласно опыту участников форума ( http://sqlinfo.ru/forum/viewtopic.php?id=2217 ) это не совсем так.
Попробуйте, если не получится, то придется делать руками insert в таблицу mysql.user
P.S. О подготовленных выражениях можно почитать http://sqlinfo.ru/forum/viewtopic.php?id=363
Неактивен
vasya написал:
Согласно документации ( http://dev.mysql.com/doc/refman/5.1/en/ … ments.html )
с версии MySQL 5.1.12 подготовленные выражения поддерживают команды CREATE USER и GRANT
Согласно опыту участников форума ( http://sqlinfo.ru/forum/viewtopic.php?id=2217 ) это не совсем так.
Попробуйте, если не получится, то придется делать руками insert в таблицу mysql.user
P.S. О подготовленных выражениях можно почитать http://sqlinfo.ru/forum/viewtopic.php?id=363
ОГРОМНОЕ спасибо !!
Помогла ссылка http://sqlinfo.ru/forum/viewtopic.php?id=363
Рабочий вариант получился так:
DROP PROCEDURE IF EXISTS `my`.`get_rights`//
CREATE PROCEDURE `my`.`get_rights`(IN logg varchar(50))
BEGIN
SET @var = CONCAT('CREATE USER ',logg);
PREPARE zelye FROM @var;
EXECUTE zelye;
SET @var = CONCAT('grant select on my.user_balance to ',logg);
PREPARE zelye FROM @var;
EXECUTE zelye;
END//
Неактивен