1. ホーム
  2. mysql

[解決済み] ローカルマシンからリモートDBをmysqldumpする方法

2022-02-06 20:32:50

質問

リモートサーバー上のデータベースの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は使わないでください。ポートではなくソケットで接続する「特別な意味」のあるナンセンスなものです)

編集 : まあ、詳しく言うと、もしホストが localhost である場合、設定された (またはデフォルトの) --socket オプションが想定されています。参照 マニュアル は、どのオプションファイルを求めるか/使用するかについてです。Windowsでは、これは名前付きパイプにすることができます。