Задача из перла на удаленном сервере создать 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;\\\"\"");
Мда, экранирование - сила!
Комментариев нет:
Отправить комментарий