SSH経由でMySQLを接続する方法(SSHポートフォワード)


こんばんは、さすがに眠くなってきた@9ensanです。

サーバー環境にMySQLは入っているがphpMyAdminをインストールしたくないし、危険だからMySQLのポートなんか開放したくないと言う時に便利なのがSSHのポートフォワード機能。

 

何が便利なのかというとSSHのポートフォワード機能を利用すると、ローカルの任意のポートに来たデータを、サーバー側の指定したポートへ転送することが可能です。

要するにサーバー側にSSHでログイン出来る環境さえあればクライアントからSSHを経由してMySQLに直接つなぐ事が出来るということです。

 

ですので、この機能を使えば「Sequel Pro」のようなGUIベースのMySQLクライアントアプリを利用して、サーバーのMySQLを操作する事も可能なのです。

(こんな事しなくても、Sequel Proには元々ポートフォワードが簡単に出来る機能がついてますが…。)

 

どのようにするかというと

ssh -i ~/.ssh/id_dsa test@test.com -p 22 -g -N -f -L 12345:localhost:3306

これで、ローカルの12345番ポートへの通信がSSHを介してtest.comの3306番ポートに転送されるようになります。

 

なので、

mysql -uroot -p -h 127.0.0.1 –port=12345

このようにMySQLで接続するとサーバ側のMySQLに接続されます。上手く接続されていれば成功です。

 

SSHオプションについて

もう少し、SSHコマンドのオプションを説明すると

-i SSHの鍵のパスを指定
-p SSH接続時のポート番号
-g 他のマシンから転送ポートへのアクセスを許可する
-N ポート転送を行う
-f バックグラウンドに移行する
-L 転送するポート:ssh接続先から見たアドレス:転送先のポート

ちなみに、「-L」はローカル側の任意のポートをssh接続側へ転送するオプションでしたが

「-R」を使用すると逆にサーバ側の任意のポートをローカル側の特定のポートに転送することが可能になります。

 

これもよく使うのですが忘れるので備忘録がてらに書きました。

関連する記事:

Facebookでコメント

コメント

    • 匿名
    • 2014年 11月8日

    参考になりました。

  1. トラックバック 0

*

return top