私は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
これを使用して、トンネリングなしで1行でこれを実行できます。
$ ssh user@remote "mysqldump -u user --password=password database_name" |
mysql -u local database_name