Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Обращение к mysql в Perl через SSH / 16 сообщений из 16, страница 1 из 1
18.12.2013, 13:03:44
    #38504994
Vladimir aka jeltoesolnce
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обращение к mysql в Perl через SSH
Доброго дня.

Пытаюсь сделать вот что:
Код: php
1.
2.
3.
system qq( ssh example.com "
         mysql -e 'GRANT ALL ON $rbase.* TO \'$dbUser\'\@\'localhost\' IDENTIFIED BY \'$dbPass\';'
         ");



Сервер выдаёт
Код: sql
1.
ERROR 1064 (42000) at line 1: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '123456' at line 1



Что это может быть, если я убираю IDENTIFIED BY..., то команда выполняется?
...
Рейтинг: 0 / 0
18.12.2013, 16:29:30
    #38505413
volodin661
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обращение к mysql в Perl через SSH
Vladimir aka jeltoesolnceДоброго дня.

Пытаюсь сделать вот что:
Код: php
1.
2.
3.
system qq( ssh example.com "
         mysql -e 'GRANT ALL ON $rbase.* TO \'$dbUser\'\@\'localhost\' IDENTIFIED BY \'$dbPass\';'
         ");



Сервер выдаёт
Код: sql
1.
ERROR 1064 (42000) at line 1: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '123456' at line 1



Что это может быть, если я убираю IDENTIFIED BY..., то команда выполняется?

я никогда дела с mysql не имела, просто посмотрела в документацию и вроде как не требуется указание пароля в синтаксисе GRANT, если пользователь уже создан.

Модератор: Тема перенесена из форума "PHP, Perl, Python".
...
Рейтинг: 0 / 0
18.12.2013, 20:06:11
    #38505804
javajdbc
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обращение к mysql в Perl через SSH
volodin661,

попробуйте сгенерить полную строку заранее,
потом ее распечатать и лишь потом заслать в ssh.

А то фик его знает что вас в переменных и какая строке
в результате генерится.
...
Рейтинг: 0 / 0
19.12.2013, 01:26:38
    #38505984
Vladimir aka jeltoesolnce
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обращение к mysql в Perl через SSH
javajdbc,

Я попробовал руками отправить запрос на SSH, перебрал все варианты типа
Код: sql
1.
ssh example.com 'mysql -e "GRANT ALL ON database.* TO 'user'@'localhost' IDENTIFIED BY 'password';"'



Cтабильный ответ
Код: sql
1.
ERROR 1064 (42000) at line 1: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'password' at line 1



Между тем, этот код
Код: sql
1.
2.
3.
4.
5.
6.
7.
     my $args = qq(  
         CREATE DATABASE IF NOT EXISTS $base;
         GRANT ALL ON $base.* TO '$OWNER'\@'localhost';
         GRANT ALL ON $base.* TO '$dbUser'\@'localhost' IDENTIFIED BY '$dbPass';
         );
 
     system qq(mysql -e "$args");



Выполняется корректно. Что позволяет мне предполагать, что дело в интерпретации SSH?
...
Рейтинг: 0 / 0
19.12.2013, 01:30:26
    #38505986
Vladimir aka jeltoesolnce
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обращение к mysql в Perl через SSH
volodin661,
Да, но в обычном исполнении эта серия проходит, она привычна в MySQL...
...
Рейтинг: 0 / 0
19.12.2013, 03:09:35
    #38506018
javajdbc
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обращение к mysql в Perl через SSH
попробуйте убрать ";" в самом конце....
...
Рейтинг: 0 / 0
19.12.2013, 10:56:26
    #38506224
Vladimir aka jeltoesolnce
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обращение к mysql в Perl через SSH
javajdbc,

Попробовал. Всё то же самое... Я могу создать пользователя через SSH, могу удалить, но, как только я пытаюсь указать строчку "IDENTIFIED BY '...' " - выбрасывает эту ошибку.
...
Рейтинг: 0 / 0
19.12.2013, 11:41:56
    #38506271
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обращение к mysql в Perl через SSH
Что в $dbPass содержится - действительно '123456' или что-то другое?
...
Рейтинг: 0 / 0
19.12.2013, 12:09:09
    #38506322
Vladimir aka jeltoesolnce
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обращение к mysql в Perl через SSH
vkle,

Другое). Но там содержится рабочий пароль, он валидный).
...
Рейтинг: 0 / 0
19.12.2013, 12:11:18
    #38506328
Vladimir aka jeltoesolnce
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обращение к mysql в Perl через SSH
Vladimir aka jeltoesolnce,

Вверху код, который я назвал рабочим, выполняется на локальной машине.
...
Рейтинг: 0 / 0
19.12.2013, 18:11:44
    #38507003
volodin661
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обращение к mysql в Perl через SSH
Vladimir aka jeltoesolncejavajdbc,

Я попробовал руками отправить запрос на SSH, перебрал все варианты типа
Код: sql
1.
ssh example.com 'mysql -e "GRANT ALL ON database.* TO 'user'@'localhost' IDENTIFIED BY 'password';"'



Cтабильный ответ
Код: sql
1.
ERROR 1064 (42000) at line 1: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'password' at line 1



Между тем, этот код
Код: sql
1.
2.
3.
4.
5.
6.
7.
     my $args = qq(  
         CREATE DATABASE IF NOT EXISTS $base;
         GRANT ALL ON $base.* TO '$OWNER'\@'localhost';
         GRANT ALL ON $base.* TO '$dbUser'\@'localhost' IDENTIFIED BY '$dbPass';
         );
 
     system qq(mysql -e "$args");



Выполняется корректно. Что позволяет мне предполагать, что дело в интерпретации SSH?


если главный подозреваемый SSH, то проверить просто:

ssh example.com 'perl test.pl -e "GRANT ALL ON database.* TO 'user'@'localhost' IDENTIFIED BY 'password';"'

а изнутри test.pl посмотреть, что приходит.

мне вот все эти игры с кавычками доверия не внушают.
...
Рейтинг: 0 / 0
19.12.2013, 18:14:13
    #38507008
volodin661
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обращение к mysql в Perl через SSH
volodin661,
без -е

ssh example.com 'perl test.pl "GRANT ALL ON database.* TO 'user'@'localhost' IDENTIFIED BY 'password';"'
...
Рейтинг: 0 / 0
21.12.2013, 19:29:14
    #38508923
Vladimir aka jeltoesolnce
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обращение к mysql в Perl через SSH
Забил на SQL + SSH, сделал так:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
     # Preparing SQL
     use File::Temp qw(tempfile); 
 
     my ( $handle, $tmpfilename ) = tempfile( "jsXXXXXX", 
         DIR => $wich,
         SUFFIX => '.sql' ); # Даёшь временный файл с SQL

     print $handle "CREATE DATABASE IF NOT EXISTS $rbase;";
     print $handle "GRANT ALL ON $rbase.* TO '$user'\@'localhost' IDENTIFIED     BY '$dbPass';";
     close $handle or die "Can't close $handle: $!\n";


Пихаем каталог с дампом и этим временным файлом на сервер, потом привычно:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
     system qq( ssh example.com " 
         cd /home/$user/data/www/$where; 
         pwd; 
         chown -R $user:$user *; 
         mysql < $tmpfilename;   # Создаём базу и пользователя
         mysql $rbase < $dump;   # Дамп в базу 
         rm $dump; 
         rm $tmpfilename; 
         "); 
...
Рейтинг: 0 / 0
23.12.2013, 03:13:23
    #38509497
InterSky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обращение к mysql в Perl через SSH
Vladimir aka jeltoesolnceЗабил на SQL + SSH
И это вместо того чтобы разобраться с проблемой :(
...
Рейтинг: 0 / 0
23.12.2013, 10:44:47
    #38509675
Vladimir aka jeltoesolnce
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обращение к mysql в Perl через SSH
InterSky,

Не получилось у меня - я час в командном режиме руками без Перла пытался выполнить GRANT ... IDENTIFIED сквозь SSH - не получилось никак.
...
Рейтинг: 0 / 0
24.12.2013, 02:41:16
    #38510613
InterSky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обращение к mysql в Perl через SSH
Код: sql
1.
ssh example.com 'mysql -e "GRANT ALL ON database.* TO 'user'@'localhost' IDENTIFIED BY 'password';"'


А что у тебя насчёт экранирования кавычек?
А то тут первая одинарная кавычка открывается перед mysql и закрывается перед user!
Тоесть в кавычках у тебя только - 'mysql -e "GRANT ALL ON database.* TO '
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Обращение к mysql в Perl через SSH / 16 сообщений из 16, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]