なっく日報

技術やら生活やらのメモ

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

結果

つながりました!(実際はひさびさすぎていろんなところで嵌りました・・・)

参考サイト

こちら、かなり、わかりやすいです。
SSHのポートフォワーディングでMySQLに接続する方法 | 田村倉庫

まとめ

mysqlに限らず、いろんなとこで活用できますね!