SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 05.02.2010 15:08:33

xanorik
Участник
Зарегистрирован: 05.02.2010
Сообщений: 2

Использование переменных в GRANT, REVOKE и т. д.

Доброго времени суток,
есть задача, в хранимой процедуре отобрать все права у пользователя. Имя пользователя передается в процедуру в качестве параметра. Для примера:

Код:

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 выполняться, к сожалению, не может.
С уважением.

Неактивен

 

#2 05.02.2010 15:23:32

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Использование переменных в GRANT, REVOKE и т. д.

xanorik написал:

P.S.: через prepare statement комманда revoke all выполняться, к сожалению, не может.

Поддерживается с версии MySQL 5.1.12

http://dev.mysql.com/doc/refman/5.1/en/ … ments.html

Неактивен

 

#3 05.02.2010 15:46:11

xanorik
Участник
Зарегистрирован: 05.02.2010
Сообщений: 2

Re: Использование переменных в GRANT, REVOKE и т. д.

Использую 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 ...' не поддерживается, к сожалению.
Есть альтернативные способы отобрать сразу все права?

Неактивен

 

#4 05.02.2010 16:35:04

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Использование переменных в GRANT, REVOKE и т. д.

Боюсь, что тогда только
DELETE FROM mysql.db, mysql.table WHERE user='…' AND host='…';
UPDATE mysql.user SET …  WHERE user='…' AND host='…';
FLUSH PRIVILEGES;

Ну или, если удаление пользователя возможно, то UPDATE можно свести
к DELETE.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson