SQLinfo.ru - Все о MySQL

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

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

Вы не зашли.

#1 07.02.2008 11:42:04

Квэнди
Участник
Зарегистрирован: 07.02.2008
Сообщений: 4

Использование set password в триггере

Здравствуйте, возможно ли использовать set password for.... в триггере ?
пишу так (триггер after update)
set password for NEW.login_name = password(NEW.passwd);

но выскакивает ошибка на NEW.login_name ошибка синтаксиса и т.д. возможно ли как- то это реализовать ?

Неактивен

 

#2 07.02.2008 11:47:12

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Использование set password в триггере

На месте for ... ожидается строка, а Вы поставили переменную. Обойти можно двумя способами:
1. UPDATE mysql.user SET password=PASSWORD(NEW.password) where User=... Host=..;
FLUSH PRIVILEGES;

2. подготовить Выше выражение через PREPARE, смотри тему
http://sqlinfo.ru/forum/viewtopic.php?id=363

Неактивен

 

#3 07.02.2008 11:54:37

Квэнди
Участник
Зарегистрирован: 07.02.2008
Сообщений: 4

Re: Использование set password в триггере

А разве FLUSH PRIVILEGES; можно использовать в триггере ? на сколько я знаю нельзя

Неактивен

 

#4 07.02.2008 12:01:01

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Использование set password в триггере

Действительно нельзя, тогда только второй путь. Наверное правильно писать запись в специальную таблицу и планировать EVENT на некий момент в будущем. EVENT не будет иметь ограничения триггера, а данные возьмет из дополнительной таблицы. Жалко, что события только в MySQL 5.1

Неактивен

 

#5 07.02.2008 12:48:51

Квэнди
Участник
Зарегистрирован: 07.02.2008
Сообщений: 4

Re: Использование set password в триггере

При попытке сделать через prepare пишет мол dynamic sql is not allowed in stored fucntion or trigger
делал так:
CREATE DEFINER=`pavel`@`10.1.1.%` PROCEDURE `chuserpas`(username varchar(50),pass varchar(50))
begin
set @chq = concat('SET Password for ',username,' = PASSWORD(',pass,')');
PREPARE execq FROM @chq;
EXECUTE execq;
end;


CREATE TRIGGER `lxls`.`upduserpas` AFTER UPDATE ON `lxls`.`user_options`
  FOR EACH ROW call chuserpas(NEW.login_name,NEW.passwd);

Неактивен

 

#6 07.02.2008 12:54:54

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Использование set password в триггере

жесткие ограничения на триггеры...

Остается только записывать в другую таблицу и выполнять по крону.

Неактивен

 

#7 07.02.2008 13:05:50

Квэнди
Участник
Зарегистрирован: 07.02.2008
Сообщений: 4

Re: Использование set password в триггере

Это именн ов самом MySql как я понимаю, ибо в правах пользователя ничего подобного не обнаружил (

Неактивен

 

#8 07.02.2008 13:10:40

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Использование set password в триггере

Неактивен

 

Board footer

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