2012-03-27 3 views
0

나는 무엇을하고 싶은지 알고 있지만 그것을 이해할 수는 없습니다.서버에 SSH를 실행하고 데이터베이스를 덤프하기 위해 명령을 실행하십시오.

원격 웹 서버로 ssh를 보내고 데이터베이스를 덤프하는 명령을 실행 한 다음 해당 데이터베이스를 종료하십시오.

문제를 복잡하게하려면이 작업을 그리드 서버로 수행해야하므로 IP 주소가 항상 동일하지는 않습니다.

나는 내 머리에 다음과 같은 생각을 가지고 있지만, 그것은 일을 얻기 위해 조정 필요 :

!/bin/bash 
ssh [email protected] 
mysqldump -uroot -pxxxxx mydb > mydb.sql 
mv mydb.sql /var/www/site/httpdocs/public_folder 
wget www.site.com/mydb.sql 

모든 아이디어를 어떻게이 일을하기 위해? 아니면 (같은 스크립트 내에서) 대신에 scp를 사용할 수있는 방법이 있을까요?

답변

5
ssh [email protected] "mysqldump -uroot -pxxxxx mydb" > mydb.sql 

이렇게하면 서버에 ssh가 실행되어 mysqldump가 실행됩니다. 아웃룩은 STDOUT에 있으며 SSH 세션을 통해 파이프되고 로컬 파일 mydb.sql에 덤프됩니다.

여기에 유일한 요구 사항은 당신이 너무 잘 자동화하지 않는 암호를 묻는 메시지가 될 사람으로 키 기반 SSH 인증 ... 당신의 접근 방식에 관해서는

, 당신이해야 NEVER EVER 넣어 데이터베이스입니다 세계가 읽을 수있는 웹 루트로 덤프합니다. 이것은 주요 보안 문제에 대해 비명을 지르는 것입니다. 또한 대부분의 작업에는 mysql 루트 계정을 사용하지 않아야합니다. 대신 새 (제한된) 데이터베이스 사용자를 작성하십시오. 일반적으로 악의적 인 사용자가 시스템을 악용하지 못하도록 가능한 한 최소한의 권한을 줄여야합니다.

+0

천재를 mysqldump에 전체 경로를 추가! 완벽하게 작동하고 비밀 번호 프롬프트 괜찮아요, 라이브 서버이기 때문에 나는 ssh 키를 사용하고 싶지 않아. 스택 오버플로가 생기 자마자 응답을 받겠습니다. 단! – Nadine

+0

일반적으로 키 기반 인증은 암호 기반 인증보다 안전합니다 (보안 방식으로 키를 처리하는 경우). 일반적으로 모든 서버에서 비밀번호 인증을 완전히 사용 중지했습니다. –

+0

업데이트 된 게시물에 대한 건배, 그게 정말 도움이 :) 나는 또한이 데이터베이스에 대한 db 사용자를 만들 것입니다 :) 많은 THanks – Nadine

1

나는 이것에 약간의 문제가 있었다. 나는 그것을 작동시키기 위해 -t 스위치를 사용했다. 내 서버에서

ssh [email protected] -t "mysqldump -uroot -pxxxxx mydb" > mydb.sql 

는 또한

ssh [email protected] -t "/usr/local/mysql/bin/mysqldump-uroot -pxxxxx mydb" > mydb.sql 
관련 문제