mysqlでlocalhostに繋ぐ場合はポート指定が効かないでデフォルトポートに勝手につながる

井澤さん
不具合が起こったとき現象を再現させるというのが定石なんですがそれができないことってありますよね。

 

ネットワークが閉鎖的で、なおかつ機器を増やすためには複雑な手続きが必要でみたいな。

そういうとき本番環境にテスト用のDBを作ったとしても、、
それはそんなに悪いことじゃないよなって思うのですがここで注意しなければならないことがあります。

mysqlは接続先を明示しないとポート指定が効かないでデフォルトポートに勝手につながる

本番DBはデフォルト(3306)で運用。
テストDB環境を3307で立ち上げるとする。
そして3307にテスト用のDB&テーブル作成のDDLを流そうとすると。。。

 

mysql -u root -P 3307 -p < devdata.sql

 

こんな感じにしてしまうと本番(3306)が全部吹き飛びます。

 

mysql -u root -h 127.0.0.1 -p < devdata.sql

 

このようにホストを明示してあげる必要があります。

久々にゾッとしました。