SSHポートフォワーディングでローカルのmysql-clientからリモートのmysql-serverに接続するとか
何の話?
本日の昼休みの話。
会社の同僚:「ローカルのmysqlコマンドで、GCE上のMySQLサーバに繋ぎたいが、ポート空いてないしなー」
自分:「昔、SSHポートフォワーディングでそういうことやったことあるよ」
ということで、SSHポートフォワーディングを久しぶりに試してみました。
SSHポートフォワーディング?
こちらのQiitaの図がわかりやすいです。 qiita.com
別名、SSHトンネリングと言ったりしますが、こっちの方がイメージつきやすいですね。
打ったコマンド
前提として、リモート側のサーバにssh出来るようにしておく必要があります。
SSHでトンネルを作る
↓のコマンドを打つ。
ssh -N -C -L 8081:localhost:3306 remotehoge
これで、localhost:8081に来た通信が、remotehoge:3306に転送されるようになります。
なお、それぞれのオプションの意味合いは以下の通り。
-L
ローカルの通信を転送する(オプションの形式は、localのport:localのhost:remoteのport
)-N
リモートコマンドを実行しないようにする-C
通信を圧縮する
mysqlクライアントをローカルのポートに接続
ターミナルの別のタブまたはウィンドウで↓のコマンドを打つ
mysql -u root -h 127.0.0.1 -P 8081 -p
結果
つながりました!(実際はひさびさすぎていろんなところで嵌りました・・・)
参考サイト
こちら、かなり、わかりやすいです。
http://www.tamurasouko.com/?p=1092
まとめ
mysqlに限らず、いろんなとこで活用できますね!