LoginSignup
9
8

More than 5 years have passed since last update.

sshトンネリングでDMZ内のmysqlにローカルから接続しちゃう

Last updated at Posted at 2013-11-15

やりたいこと

本番環境やステージング環境では、DMZ内にDBを設置するのが常套かと思います。このDBにローカルから直接接続して、手慣れたmysqlクライアントでデータ参照/操作したい場合のお話です。

前提環境

  • 対象のDBに接続可能なappサーバにssh接続可能なこと
  • DBはmysql(この投稿上では)

使えるmysqlクライアント

以下の手順説明ではクライアント側はmysqlコマンドを使いますが、基本的にどんなクライアントでも問題無いはずです。手元では Navicast Essentials for MySqlやrails consoleで接続して便利に使ってます。

手順

  1. sshトンネリング接続を確立する
$ ssh -o TCPKeepAlive=yes user@app.server -NfL 13306:10.0.0.123:3306
# 13306 : local側の空きポート番号
# 10.0.0.123 : appサーバから見たdbサーバアドレス
# 3306: dbサーバのmysql接続用ポート
  1. mysqlに接続する@ローカル
$ mysql -h 127.0.0.1 -P 13306 -p
# "localhost"ではなく127.0.0.1
# sshトンネリングで設定したポート番号に接続

問題点

  • サーバ側の設定次第ですが、何も操作しない時間がある程度経過すると、ssh接続を切断されてしまうので、その都度つなぎ直す必要が有ります。
    -> tsuyoshi_choさんにKeepAlive+ServerAliveIntervalを教えてもらって解消しました。ありがとうございます!
  • 危ない技なので取り扱い要注意!
9
8
5

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
8