mysqlへsshポートフォワード(port forwarding)して接続する方法メモ

はじめに

mysqlに接続するときは、開発サーバーにログインしてそこからmysqlコマンドで接続・・・

という流れが多かったのですが、開発環境によってはwebサーバーはローカルpcでdbはサーバー上のものを使う・・・
なんてこともあるかと思います

そんなときの実現方法をメモします

方法

1. トンネルを作る

ssh -f -N ssh_user@ssh_host -i -L 9876:db_host:3306

オプション -f -Nでバックグラウンドで接続し続けます

2. 1のトンネルを使ってmysqlへ接続

mysql -u db_user -h 127.0.0.1 -P 9876 -p db_name

※9876の部分はpcで使ってないポートであればなんでもok

3. 後片付け
ps aux | grep ssh

abcdefg       11563   0.0  0.0  2453208    440   ??  Ss    7:04PM   0:00.00 ssh -f -N ssh_user@ssh_host -i -L 9876:db_host:3306
・・・

こんな感じで残っている接続を確認。左から2番目がプロセスIDとわかるので以下のコマンドで削除

kill 11563

.ssh/configを使ってみる

.ssh/config

Host db_tunnel # 自分で決めていい名前
  HostName 100.xxx.yyy.zzz # sshホスト
  Port 22
  User ssh_user # sshユーザー名
  GatewayPorts yes
  LocalForward 9876 db_host:3306

1. トンネルを作る

ssh -f -N db_tunnel

2. 1のトンネルを使ってmysqlへ接続

mysql -u db_user -h 127.0.0.1 -P 9876 -p db_name