web-dev-qa-db-ja.com

ローカルマシンからリモートデータベースをmysqldumpする方法

リモートサーバー上のデータベースの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
148
Mauritz Hansen

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では、これは名前付きパイプにすることができます。

217
Wrikken

リモートサーバーに対してローカルでmysqldumpを呼び出すことができます。

私のために働いた例は次のとおりです:

mysqldump -h hostname-of-the-server -u mysql_user -p database_name > file.sql

接続オプションについては、mysqldump documentation をたどっただけです。

63
Ondrej Burkert