WindowsからMySQLサーバにクライアントソフトを用いてアクセスする場合、通常はMySQLデータベース側でリモートアクセスの許可をしておく必要がある。 しかし、外部からの接続を許可していないMySQLにクライアントソフトからアクセスしたい時もあるだろう。そんなときは、MySQLにSSHを経由してログインするMySQLクライアントソフトを用いるとよい。
今回は、そんなSSH経由でMySQLを操作することができるクライアントソフト『HeidiSQL』で、SSH経由でMySQLに接続、操作を行う手順を説明する。
1.HideiSQLのインストール
まずは、HideiSQLのダウンロード、インストールを行う。 こちらのリンク先から好きなバージョン(とりあえず、最新版で良いだろう)のインストーラーをダウンロードし、インストーラーを起動する。
インストーラーは、基本的に「次へ」を押し続けていくだけなので説明は割愛する。
2.HideiSQLにMySQLへの接続設定を行う
次に、インストールしたHideiSQLに対して、接続先となるMySQLサーバの情報を設定する。 まずは[新規] > [セッションを追加]を選択し、新規のセッションを作成する。
新規のセッションが作成できたら、任意の名称に変更する。 右カラムから[設定]タブを開き、[MySQL(SSH tunnel)]を選択し、「SSH接続後にMySQLに接続する際の情報」を記述する。
ここでポイントになるのが、この設定は今HeidiSQLをインストールしたマシンから見た接続情報ではなく、SSH接続先から見た接続情報だということ。 つまり、SSHで直接MySQLサーバにアクセスするようであれば、ここの接続先はMySQLサーバから見て自分自身となる「127.0.0.1(localhost)」となる。
次に、SSHトンネル設定を行う。 SSHトンネルを利用する際は、「plink.exe」というプログラムが必要となる。もしまだプログラムをダウンロードしていない場合は、[plink.exeの場所]の下にある[plink.exeをダウンロードする]からダウンロードし、適当な場所に設置する。ファイル設置後、[plink.exeの場所]でファイルパスを指定する。ここでは、HeidiSQLの設置場所である「C:\Program Files\HeidiSQL」配下に設置する。
その他、SSH接続で必要になるSSH接続先のホスト名やポート、ID、パスワードを指定する。 更に、デフォルトのタイムアウト値が4秒と少なすぎるため、10秒~30秒程度に変更する。
これで、セッションの設定が完了したので、左下の[保存]をクリックする。
3.known_hostとして登録する
セッションの設定完了後、すぐに接続出来るわけではない。 接続先をknown_hostとして登録するため、一度手動でplink.exeを使ってSSH接続を行う必要がある。 そのため、コマンドプロンプトで以下のコマンドを実行する。
"C:\Program Files\HeidiSQL\plink.exe" ユーザ名@SSHホスト名
C:\Users\Work>"C:\Program Files\HeidiSQL\plink.exe" ユーザ名@SSHホスト名
The server's host key is not cached in the registry. You
have no guarantee that the server is the computer you
think it is.
The server's rsa2 key fingerprint is:
ssh-rsa 2048 4X:07:XX:7b:8f:21:XX:f6:ey:1c:XX:3e:6e:c7:XX:fa
If you trust this host, enter "y" to add the key to
PuTTY's cache and carry on connecting.
If you want to carry on connecting just once, without
adding the key to the cache, enter "n".
If you do not trust this host, press Return to abandon the
connection.
Store key in cache? (y/n)
「Store key in cache? (y/n) 」という表示がされたら、「y」を選択する。 これで、known_hostとしてレジストリに登録がされた。
4.MySQLに接続する
これでHeidiSQLでMySQLに接続ができるようになった。 セッションの[開く]を選択する。
無事、MySQLサーバにアクセスすることが出来た。 使用するデータベースが制限されているなら、接続時の情報にデータベースを指定してあげると良いだろう。