пятница, 3 апреля 2009 г.

Создаем mysql user'a из perl'a

Задача из перла на удаленном сервере создать mysql пользователя. Либо пользуем номальный перловый родной способ (чет мне не захотелось), либо мудрим с нечеловеческими вариациями (я не злая, но оч хотелось сделать именно так).

Достигла банкая:

В одну строку (работает, но так низя делать):

system("ssh -l $admin db \"mysql -u root -p -e \\\"GRANT ALL PRIVILEGES ON \\\\\\\`$nickname%\\\\\\\`.* TO '$nickname'\@'$dbhost' WITH GRANT OPTION; update mysql.user set Password=password('$dbpass') where host='$dbhost' and user='$nickname'; flush privileges;\\\"\"");

И наконец более менее адекватный вариант:

my $mysql_cmd = "/usr/local/bin/mysql";
my $ssh_cmd = "/usr/bin/ssh";
my $s1 = "GRANT ALL PRIVILEGES ON \\\\\\\`$nickname%\\\\\\\`.* TO '$nickname'\@'$dbhost' WITH GRANT OPTION";
my $s2 = "update mysql.user set Password=password('$dbpass') where host='$dbhost' and user='$nickname'";
my $s3 = "flush privileges";

system("$ssh_cmd -l $admin db \"$mysql_cmd -u root -P 3308 -p -e \\\" $s1; $s2; $s3;\\\"\"");

Мда, экранирование - сила!

Комментариев нет: