SQLinfo.ru - Все о MySQL

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

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

Вы не зашли.

#1 05.05.2010 11:22:33

Артём Н.
Активист
Зарегистрирован: 03.11.2009
Сообщений: 156

Не работает CREATE USER в процедуре

Вот такое не работает:

CREATE
DEFINER = 'root'@'%'
PROCEDURE UserAdd(
  IN v_user_name CHAR(16),
  IN v_user_host CHAR(60),
  IN v_password VARCHAR(255),

...
sproc: BEGIN
  declare granted BOOL;
  declare full_user CHAR(80);
...

CREATE USER full_user IDENTIFIED BY PASSWORD v_password;

Чем возможно заменить CREATE USER? Помимо, прямой записи, конечно?

Отредактированно Артём Н. (05.05.2010 11:57:46)


"И ни птица, ни ива слезы не прольет,
Если сгинет с земли человеческий род.
И весна, и весна встретит новый рассвет,
Не заметив, что нас уже нет..."

Неактивен

 

#2 05.05.2010 14:27:41

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

Re: Не работает CREATE USER в процедуре

А через PREPARE тоже не работает?

Неактивен

 

#3 05.05.2010 15:13:51

Артём Н.
Активист
Зарегистрирован: 03.11.2009
Сообщений: 156

Re: Не работает CREATE USER в процедуре

Для Prepare внешняя переменная нужна...
Сейчас попробую.


"И ни птица, ни ива слезы не прольет,
Если сгинет с земли человеческий род.
И весна, и весна встретит новый рассвет,
Не заметив, что нас уже нет..."

Неактивен

 

#4 05.05.2010 17:16:40

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

Re: Не работает CREATE USER в процедуре

Для PREPARE можно обойтись CONCAT из строк без переменных вообще.

Неактивен

 

#5 05.05.2010 22:19:10

Артём Н.
Активист
Зарегистрирован: 03.11.2009
Сообщений: 156

Re: Не работает CREATE USER в процедуре

Так не работает:

Код:

PREPARE gu from CONCAT('GRANT USAGE ON *.* TO ', full_user,
    ' WITH MAX_QUERIES_PER_HOUR ', mqph,
    ' MAX_UPDATES_PER_HOUR ', muph,
    ' MAX_CONNECTIONS_PER_HOUR ', mcph,
    ' MAX_USER_CONNECTIONS ', muc);
  EXECUTE gu;
  DEALLOCATE PREPARE gu;

Как обойтись без переменных?


"И ни птица, ни ива слезы не прольет,
Если сгинет с земли человеческий род.
И весна, и весна встретит новый рассвет,
Не заметив, что нас уже нет..."

Неактивен

 

#6 06.05.2010 11:30:06

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

Re: Не работает CREATE USER в процедуре

Да, туплю. Я имел в виду, что переменных можно избежать в EXECUTE USING.
А тут — прийдется использовать переменную sad Назовите ее каким-нибудь
невменяемым именем, тогда вероятность пересечения будет пренебрежимо мала.

Неактивен

 

#7 06.05.2010 12:16:04

Артём Н.
Активист
Зарегистрирован: 03.11.2009
Сообщений: 156

Re: Не работает CREATE USER в процедуре

Я её сразу обнуляю, после PREPARE. Просто, у меня неприязнь к глобальным переменным.

Отредактированно Артём Н. (06.05.2010 12:16:33)


"И ни птица, ни ива слезы не прольет,
Если сгинет с земли человеческий род.
И весна, и весна встретит новый рассвет,
Не заметив, что нас уже нет..."

Неактивен

 

#8 06.05.2010 13:18:54

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

Re: Не работает CREATE USER в процедуре

Дело не в этом. Дело в том, что пользователь может до вызова Вашей процедуры
иметь переменную с этим именем. И расстроится, если Вы ее обнулите на выходе.

Неактивен

 

#9 06.05.2010 14:09:15

Артём Н.
Активист
Зарегистрирован: 03.11.2009
Сообщений: 156

Re: Не работает CREATE USER в процедуре

OMG... push/pop... big_smile
Сделаю подчёркивания, в начале названий. Расстроится - не беда. smile

Отредактированно Артём Н. (06.05.2010 14:09:56)


"И ни птица, ни ива слезы не прольет,
Если сгинет с земли человеческий род.
И весна, и весна встретит новый рассвет,
Не заметив, что нас уже нет..."

Неактивен

 

Board footer

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