リモートサーバー上のデータベースのmysqldumpを実行する必要がありますが、サーバーにmysqldumpがインストールされていません。マシンでmysqldumpを使用して、リモートデータベースに接続し、マシンでダンプを実行したいと思います。
Sshトンネルを作成してからダンプを実行しようとしましたが、うまくいかないようです。私は試した:
ssh -f -L3310:remote.server:3306 [email protected] -N
トンネルが正常に作成されます。私が行った場合
telnet localhost 3310
正しいサーバーmysqlバージョンを示すいくつかの宣伝文句を取得します。ただし、次の操作を行うとローカルに接続しようとするようです
mysqldump -P 3310 -h localhost -u mysql_user -p database_name table_name
Serverfaultでまだ見たことがないので、答えは非常に簡単です:
変化する:
ssh -f -L3310:remote.server:3306 [email protected] -N
に:
ssh -f -L3310:localhost:3306 [email protected] -N
そして変更:
mysqldump -P 3310 -h localhost -u mysql_user -p database_name table_name
に:
mysqldump -P 3310 -h 127.0.0.1 -u mysql_user -p database_name table_name
(localhostを使用しないでください。これは、おそらくポートではなくソケットで接続する「特別な意味」のナンセンスの1つです)
edit:さて、詳しく説明します:Hostがlocalhost
に設定されている場合、設定済み(またはデフォルトの)--socket
オプションが想定されます。 マニュアル を参照して、オプションファイルを探して使用してください。 Windowsでは、これは名前付きパイプにすることができます。
リモートサーバーに対してローカルでmysqldumpを呼び出すことができます。
私のために働いた例は次のとおりです:
mysqldump -h hostname-of-the-server -u mysql_user -p database_name > file.sql
接続オプションについては、mysqldump documentation をたどっただけです。