Задавайте вопросы, мы ответим
Вы не зашли.
Доброго времени суток,
есть задача, в хранимой процедуре отобрать все права у пользователя. Имя пользователя передается в процедуру в качестве параметра. Для примера:
CREATE PROCEDURE `ch_user`(in pUserName varchar(16)) BEGIN ... revoke all, grant option from pUserName; ... END$$
Ошибка: Error Code : 1269, Can't revoke all privileges for one or more of the requested users.
Возникает, потому что pUserName воспринимается, как пользователь с именем 'pUserName'.
Как в подобных запросах использовать значение переменной?
P.S.: через prepare statement комманда revoke all выполняться, к сожалению, не может.
С уважением.
Неактивен
xanorik написал:
P.S.: через prepare statement комманда revoke all выполняться, к сожалению, не может.
Поддерживается с версии MySQL 5.1.12
http://dev.mysql.com/doc/refman/5.1/en/ … ments.html
Неактивен
Использую mysql-5.1.26-win32:
prepare cm from 'revoke all, grant option from Admin'; execute cm;
Error Code : 1295
This command is not supported in the prepared statement protocol yet
Так что, конкретно 'revoke all, grant option from ...' не поддерживается, к сожалению.
Есть альтернативные способы отобрать сразу все права?
Неактивен
Боюсь, что тогда только
DELETE FROM mysql.db, mysql.table WHERE user='…' AND host='…';
UPDATE mysql.user SET … WHERE user='…' AND host='…';
FLUSH PRIVILEGES;
Ну или, если удаление пользователя возможно, то UPDATE можно свести
к DELETE.
Неактивен