前回の記事で、レンタルサーバーで外部からデータベースクライアント接続が制限されていた為に phpMyAdmin を使ってテーブルインポートを行ったことを書きました
MySQLテーブルデータのエクスポート/インポート
その後、何か方法がないか調べていると、SSHポートフォワードという方法で出来るかもしれないということが分かり、確かエックスサーバーでも SSH が使えたはずということでやってみました (^^)
SSHポートフォーワード
SSHポートフォワードとは、ローカルの特定ポートへの送信をリモートサーバーの特定ポートへ転送できるというルーターのような機能のようです
詳細までは理解はできていないので、これ以上の説明は カッツアイ (^_^;)
興味がある方は、各自調べてみてください
それでは、エックスサーバーの MySQL に HeidiSQL で接続するまでを紹介します
SSH接続
まずは、エックスサーバーの管理パネルからSSHを使えるようにします
エックスサーバーのマニュアル にそって行っていきます
SSH有効化
SSH設定を ON にします
公開鍵認証用鍵ペアの生成
パスフレーズ(任意の文字列)を入力します
公開鍵認証用鍵ペアの生成(確認)ボタンをクリック
公開鍵認証用鍵ペアの生成(確定)ボタンをクリック
秘密鍵のダウンロードダイアログが表示されます
秘密鍵ファイルを任意の場所に保存しておきます
これでSSH接続を行う準備の第一段階が終了です
SSH接続確認
エックスサーバーのマニュアル でも紹介されている TeraTerm で接続してみます
TeraTerm 起動
SSH認証設定
先ほど保存した秘密鍵ファイルを指定します
新しい接続
メニューから 新しい接続 を選択して実行します
ホストに初期ドメイン名、TCPポートに 10022 を入力します
認証ダイアログ
初回は接続に対する警告ダイアログが表示されます
続行をクリック
ユーザー名(サーバーID)と秘密鍵のパスフレーズを入力します
接続
SSH接続出来たようです
一旦 exit と入力して終了させます
次は、いよいよ HidiSQL からアクセスしてみます
MySQL接続
エックスサーバー上の MySQL への接続情報を確認しておきます
接続情報
エックスサーバーの管理パネルの MySQL設定からデータベースやユーザーを作成できるのですが、今回は既存の WordPress のデータベースとアクセスユーザー情報を使って接続してみます
データベース名やユーザー名、パスワードが分からない場合は FTP で接続して wp-config.php の中を見て下さい
下記のような感じで必要な情報が記述されています
/** WordPress のためのデータベース名 */ define('DB_NAME', 'xxxxxx_wp1'); /** MySQL データベースのユーザー名 */ define('DB_USER', 'xxxxxx_wp1'); /** MySQL データベースのパスワード */ define('DB_PASSWORD', 'xxxxxxxxxx'); /** MySQL のホスト名 */ define('DB_HOST', 'mysqxxxx.xserver.jp');
この情報を使って wordpress のデータベースへ接続してみます
plink
次に HeidiSQL でSSHポートフォワードを使うには plink.exe というプログラムがいるようなので準備します
plink.exe と言うのは、puTTY というオープンソースのターミナルエミュレータに含まれているコマンドラインプログラムでSSHポートフォワード接続機能をサポートしてるようです
puTTY
http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
日本語版も有志の方によって配布されているようです
http://hp.vector.co.jp/authors/VA024651/PuTTYkj.html
今回は、この日本語版のZipファイルをダウンロードして任意のフォルダーに解凍して使用します
これで準備完了です とこの時点では思ってました (^_^;)
以降、うまく行った手順をまとめても良いのですが、失敗も情報のうちなので、実際に行った手順どおりに紹介していきます
HeidiSQLに接続用セッション作成
HeidiSQLを起動してセッションを追加します
データベース情報設定
ネットワーク種別を MySQL (SSH tunnel) に設定して、先ほど確認したMySQLデータベース接続情報のホスト名、ユーザー名、パスワードを設定します
SSHトンネル設定
SSHトンネルと言うのは、SSHポートフォワードのことです
TeraTerm でSSH接続した時に使用した情報を設定します
ホスト名 | 初期ドメイン名 |
TCPポート | 10022 |
ユーザー名 | サーバーID |
パスワード | 秘密鍵のパスフレーズ |
plink.exe プログラムと秘密鍵ファイルを指定して、保存キーでセッション情報を一旦保存
※秘密鍵ファイルの設定についてはあとで修正があります
接続
うまく接続してくれるでしょうか
はい で継続するとエラー発生です (>_<)
詳細はよくわかりませんが、MySQL のエラーというよりは、plink でなにか問題があった模様
もうちょい情報がないか、コマンドラインでやってみる
なんかキーファイルが使えないとか言っている (>_<)
“Unable to use key file (OpenSSH SSH-2 private key)” でググってみる
まさにこれと同じ状況のようです
putty でエックスサーバに接続する際の注意点 | 備忘録
puttygen.exe で秘密鍵の形式を変換してあげれば良いようです
起動して、Load からキーファイルを指定
パスフレーズを入力
Save Private Key ボタンをクリックして保存
セッション情報修正
SSHトンネルの秘密鍵ファイルの設定を変換した ppk タイプのファイルに入れ替え
接続してみます
うまくいくか
うむー
うむむー
待たされます
…
じぇ
じぇじぇじぇ
つながりました \(^o^)/
SSHポートフォワードを使うことで、HeidiSQLでエックスサーバーの MySQL に接続することが出来ました (^^)
注意
ここで紹介しているのは、エックスサーバーでの接続例です
他のレンタルサーバーでは、SSHの使用や、秘密鍵の形式、接続ポートの番号等が異なると思いますのでここで紹介した手順では接続出来ない可能性が高いと思われます
また、接続できた場合でも、データベースを直接操作することが出来るようになるので十分な注意が必要です
HeidiSQL を使うと簡単に様々な処理を行うことが出来てしまうので間違えてデータを削除してしまう等、 WordPress に重大な影響を与える可能性があります。
MySQLデータベースを扱うスキルや経験がある方以外は止めておいたほうが無難です
ですが、普段から phpMyAdmin を使って操作している方にとっては、HeidiSQL を使うとかなりデータベースが扱いやすくなると思いますので、そのような方へはお勧めします (^^)