SSH на сервер и выполнить команду для сброса базы данных - PullRequest
0 голосов
/ 27 марта 2012

Я знаю, что я хочу сделать, но я не могу понять это.

Я хочу подключиться по ssh к удаленному веб-серверу, выполнить команду, чтобы создать дамп базы данных, а затем отключить эту базу данных.

Чтобы усложнить ситуацию, я делаю это с сетевым сервером, поэтому IP-адреса не всегда будут одинаковыми.

У меня в голове есть следующая идея, но ее нужно настроить, чтобы она заработала:

!/bin/bash
ssh root@server.com
mysqldump -uroot -pxxxxx mydb > mydb.sql
mv mydb.sql /var/www/site/httpdocs/public_folder
wget www.site.com/mydb.sql 

Есть идеи, как заставить это работать? Или, может быть, есть способ (в рамках того же сценария), что я могу вместо этого найти его?

Ответы [ 2 ]

5 голосов
/ 27 марта 2012
ssh root@server.com "mysqldump -uroot -pxxxxx mydb" > mydb.sql

Это будет ssh к вашему серверу и выполнит там mysqldump.Выход будет на STDOUT, который будет передан через сеанс SSH и выгружен в локальный файл mydb.sql.

Единственное требование здесь - это ssh-аутентификация на основе ключей, так как в противном случае вас попросятпароль, который не слишком хорошо автоматизирует ...

Что касается вашего подхода, вы должны НИКОГДА не помещать дампы базы данных в понятный всему миру webroot.Это просто крики о серьезных проблемах безопасности.Также вам, вероятно, не следует использовать корневую учетную запись mysql для большей части вашей работы.Вместо этого создайте нового (ограниченного) пользователя базы данных.Как правило, вы всегда должны стараться сводить права к минимуму, чтобы избежать использования вашей системы плохими парнями.

1 голос
/ 18 марта 2013

У меня были некоторые проблемы с этим. Я использовал ключ -t, чтобы он заработал.

ssh root@server.com -t "mysqldump -uroot -pxxxxx mydb" > mydb.sql

На моем сервере я также добавил полный путь к mysqldump

ssh root@server.com -t "/usr/local/mysql/bin/mysqldump-uroot -pxxxxx mydb" > mydb.sql
...