※当ブログではアフィリエイト広告を利用しています。
最近の開発環境構築のトレンドを知るため、仮想化ソフト「VirtualBox」と開発用の仮想環境を簡単に構築できる「Vagrant」で、PHPとMySQLの開発環境を整えてみました。
ホストPCからVagrant上のMySQLを操作するため、MySQLクライアントソフト「HeidiSQL」を使用してみたのですが、接続する際に少しハマったので方法をメモします。
HeidiSQLとは?
MySQLデータベースを管理できる無料のソフトウェアです。
GUIベースで動作が軽く、データベース・テーブルの作成やクエリの実行など、データベース管理のための機能は一通り使えます。
HeidiSQL オフィシャルサイト
http://www.heidisql.com/
高機能なMySQLフロントエンド「HeidiSQL」- MOONGIFT
http://www.moongift.jp/2009/09/heidisql/
Vagrant上のMySQLへの接続方法
ゲストPCの(Vagrant上)のMySQLにはSSHトンネル(ポートフォワード)を使って接続します。
ゲストPCのMySQLポート(3306)を解放していなくても、SSH経由で接続することができます。
ホストPC・ゲストPCは以下のような環境です。
ホストPC:Windows7, HeidiSQL 8.0.0.4396
ゲストPC:Ubuntu 12.04 LTS, PHP 5.3.10, MySQL 5.5.31,Nginx 1.1.19
MySQL接続設定
ネットワーク種別:MySQL(SSH tunnel)
ホスト名/IP:localhost
ユーザー:root
パスワード:空欄
ポート:3306
SSHトンネル設定
SSHトンネルにはWindows用のコマンドラインSSHクライアント「plink.exe」が必要です。
下記ページよりダウンロードし、任意のフォルダに格納しておきます。
http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
plink.exeの場所:[先の手順でダウンロードしたplink.exeのパス]
SSHホスト + ポート:localhost:2222
ユーザー名:vagrant
パスワード:vagrant
ローカルポート:3307
これで接続できるはずなのですが、以下のエラーが出て接続できません。
SQL Error (2003) in statement #0: Can’t connect to MySQL server on ‘localhost’ (10061)
調べたところplink.exeへ渡しているパラメータが関係しそうなのですが、解決法がわからなかったので認証キーをレジストリにキャッシュすることで対応しました。
下記コマンドを実行します。(plink.exeのパスは先の手順でダウンロードしたplink.exeのものに読み替えてください)
"C:\Program Files\putty\PLINK.EXE" -ssh vagrant@localhost -pw "vagrant" -P 2222 -N -L 3307:localhost:3306
すると、Store key in cache? (y/n)と聞かれるので「y」を入力します。
レジストリに認証キー情報がキャッシュされます。
HeidiSQLの設定画面に戻り、「開く」ボタンを押下するとMySQLへの接続が完了しました。
認証キー情報がキャッシュに存在する限り、接続が可能です。
ためしにSELECT文を実行してみたところ、結果がグリッドに見やすく表示されました。
おわりに
Windows環境でもGUIで快適にMySQLデータベースの操作ができるようになりました。
SSHトンネルとplink.exeの設定については腑に落ちない点があったので、解決法がわかる方は教えて頂けると助かります。