HeidiSQLでMySQLサーバーにリモート接続(SSH Tunnelingを使う)

HeidiSQLというのが便利そうなので使ってみました。
でもいろいろハマったのでここでまとめます。特に下のエラー。

SQL Error (2003): Can't connect to MySQL server on 'localhost' (10061)

会社のDBサーバーはMySQLで、Linuxに入っていて、そこにはSSHでアクセスしてるから

  1. ネットワーク種別は 「MySQL (SSH tunnel)」だろうと。
  2. ホスト名は、そのサーバーIPだろうと。
  3. ユーザー、パスワードは今使ってるのを入れて、ポートはデフォルトの3306だろうと。

さらに、SSH トンネルの設定

  1. plink.exeというのが必要そうなのでダウンロード、HeidiSQLと同じ所に入れた
  2. SSHホストとポートをいれた。ポートはデフォルトの22
  3. ユーザー名・パスワードを入れました。
  4. その他はよくわからないのでそのまま。

以下設定後の状態です。


でも繋がらない。こんなエラー。

SQL Error (2003): Can't connect to MySQL server on 'localhost' (10061)

いろいろ調べて、plinkというのは、SSH先のリモートで実行しているプロセスをローカルで実行しているプロセスに見せかけるのためのトンネリングツールということが分かった。すなわち、DB接続設定にはリモートのIPやホスト名を入れるのではなく、ローカルのIPを入れればよいとのこと。それでホスト名は127.0.0.1を入れたがやはりだめ。

いろいろと考えて、もしかして始めての接続で鍵情報がないからでは? と思い至る。そこで、コマンドプロンプトからplink.exeを実行、サーバーに繋げてみた。

plink -P 22 sshuser@sshhost

これで秘密鍵だかなんだかがPCに入る。これでアクセスできるようになりました。めでたしめでたし。