2012年5月21日月曜日

mysqldumpでlocalhostのポート指定

リモート環境のmysqlをsshポートフォワード経由でlocalhost:13306にマップして接続し、
ローカル環境のmysqlとスキーマ等の違いを確認するためにmysqldumpを使った。
manを見る限り、ポート番号は -P または --port= で指定出来ると書いてある。

mysqldump -h localhost -P 13306 -u XXX -p XXX -d --compact XXX > out.sql
そしてローカルのmysqlに対し同様に出したsqlと比較。

奇跡の完全一致。

そんなバカな。

ローカルのmysqlを停止させて実行してみる。
mysqldump: Got error: 2002: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) when trying to connect
やっぱり。

エラーメッセージからするに、ドメインソケットを使ってるっぽい。
-P 指定していてもお構いなしっていうのはどっちかというとバグなんじゃないのかな。

強制的にTCPを使用させればうまくいく。
mysqldump --protocol=TCP -h localhost -P 13306 -u XXX -p XXX -d --compact XXX > out.sql

0 件のコメント:

コメントを投稿