SSHポートフォワーディングでMySQLに接続する方法
SSHポートフォワーディング(トンネリング)でMySQLに接続する方法を紹介します。
ここではWindowsのMySQLクライアント「HeidiSQL」+SSHで、さくらVPSのMySQLに接続する例で解説します。
HeidiSQLについては以下の記事を参考にしてください。
本手順の設定を行う場合、以下の記事を参考に、公開鍵と秘密鍵の設定を予め行って下さい(WinSCPまで接続確認できていればなおGood)。
1.SSHポートフォワーディングとは
SSHポートフォワーディング(トンネリング)とは、図のようにSSHによって確立した通信経路を利用して、クライアント(ここではHeidiSQL)のポートをMySQLのポート(3306)にマッピングすることを指します。
ユーザーはローカルPCのクライアントポートに接続すれば、クライアントがSSH接続でサーバに接続し、その接続を利用してさらに3306ポートに接続してくれます。
2.plink.exeのダウンロード
plink.exeは、PuTTYのコマンドラインツールです。
「PuTTY Download Page」のページにアクセスして「plink.exe」をクリックし、plink.exeを任意のフォルダに保存します。「x86」と記載されているので64bit版はないようです。
3.HeidiSQLの設定
HeidiSQLに対し、MySQLの接続設定とSSHの設定を行います。
HeidiSQLを起動し、「新規」をクリック。
接続名はとりあえず「さくらVPS」にします。
ネットワーク種別から「MySQL(SSH Tunnel)」を選択。
「SSHトンネル」というタブが追加されます。このタブの設定はあとで行います。
「設定」タブの残りの項目は以下のように設定します。要するにトンネリングによりサーバ上にログインできたあとの情報を設定します。
- ホスト名/IP:127.0.0.1
- ユーザー:MySQL接続時のユーザー名
- パスワード:MySQL接続時のパスワード
- ポート:3306
- データベース:選択しない(というかまだ接続されていないので選択できない)
次に「SSHトンネル」タブをクリックしてSSHの情報を設定します。
まず「plink.exeの場所」の右側のアイコンをクリック。
ダウンロードしたplink.exeを選択します。
「SSHホスト+ポート」はサーバのIPアドレスとSSHポート(通常22)を設定します。スクリーンショットの設定値はダミーです。
「ユーザー名」「パスワード」には、SSH接続のユーザー名(=VPS上で作成したユーザー名など)とパスワードを設定します。
「plink.exeのタイムアウト(秒)」には、やや長めの値を設定します。デフォルトで設定された「4」ではタイムアウトしてしまうという記事をみかけたので、「15~20」くらいを設定します。実際試したところ、接続に15秒くらいかかりました。
「プライベートキーファイル」には秘密鍵のファイル(=冒頭のリンク先の情報で作成した.ppkファイル)を設定します。ペアとなる公開鍵はサーバに設定しておいてください。
ローカルポートはデフォルトの「3307」のままで問題ありません。
設定したら「保存」をクリック。
4.SSH接続
接続名「さくらVPS」を選択して右下の「開く」をクリック。
しばらくして次のような接続画面に切り替わればOKです。左ペインに「さくらVPS」という接続名が表示され、その下にVPS上で作成したデータベースが表示されます。
ちなみにタイムアウト時間をむやみに長くすると、接続にかなり時間がかかってしまうようで、タイムアウトするまで接続画面に切り替わらない仕様なのかもしれません(間違ってたらすいません)。
5.エラーになる場合
正常に接続できない場合、次のようなダイアログが表示されます。
私の場合、このエラーで悩みましたが、タイムアウト値をのばして、ローカルポートをデフォルトの「3307」に戻し、秘密鍵を設定したところ、接続できるようになりました。
6.参考サイト
参考サイトは以下です。ありがとうございました。
- MySQLのrootログインで「Access denied for user 'root'@'localhost' (using password: YES)」に遭遇した場合の対処
- mysqlやmysqldumpで「 [Warning] Using a password on the command line interface can be insecure.」という警告が表示される場合の対処
- bashでMySQLのselect結果を出力する方法
- MySQL(phpMyAdmin)でエラー#1089になる場合の対処
- MySQLで「The used SELECT statements have a different number of columns」となる場合の対処
- mysqldumpで「Error: 'Access denied; you need (at least one of) the PROCESS privilege(s) for this operation' when trying to dump tablespaces」となる場合の対処
- Windows向けMySQL管理クライアント「HeidiSQL」
- WindowsにMySQL(zip版)をインストールする
- MySQLのmax_user_connectionsについて
- phpMyAdminでインポートできない大きなファイルを一気にインポートできる「BigDump」
- phpMyAdmin で MySQL のストレージエンジンを MyISAM から InnoDB に変更する方法