저는 sync.sh
우리 웹사이트의 이상적이지 않은 버전 관리와 조화를 이루는 스크립트를 만들려고 노력하고 있습니다. 이 스크립트는 몇 가지 다른 사항과 함께 라이브 데이터베이스의 복사본을 로컬 개발 환경으로 마이그레이션합니다. mysql 마이그레이션 부분에 문제가 있습니다.
스크립트는 개발 컴퓨터에서 실행됩니다. remote
생방송 진행자입니다.
# --------------
# database
# ssh tunnel
ssh -L 3307:remote:3306 user@remote
# mysql dump
mysqldump -u someuser -h remote -P 3307 -p"p4ssw0rd" db > localfile.sql
# somehow close ssh tunnel ???
# populate local db with sql dump file
mysql -ulocal db < localfile.sql
# -----------------
# other sync stuff
# ...
스크립트의 mysql 부분을 실행하면 다음과 같은 결과가 나타납니다.
Pseudo-terminal will not be allocated because stdin is not a terminal.
Enter password:
SSH 키가 설정되어 있고 원격으로 올바르게 SSH를 연결할 수 있습니다. 그러나 스크립트 컨텍스트에서 실행하면 문제가 발생합니다.
답변1
다음을 사용하여 터널링 없이 한 줄로 이 작업을 수행할 수 있습니다.
$ ssh user@remote "mysqldump -u user --password=password database_name" |
mysql -u local database_name