外部接続が許可されていないレンタルサーバのデータベースにローカルPCからODBC接続する
今回はさくらインターネットなど外部接続を許可していないレンタルサーバのデータベース(今回はMySQL)にローカルPCのAccessやExcelからもODBC経由で接続出来る方法を紹介します。
SSH接続に便利なツール「PortForwarder」
このようなケースの場合、SSHのポートフォワード機能を利用してlocalhostとしてレンタルサーバのデータベースに接続します。
通常SSH接続をする際にはtera termやPuTTYなどのSSHクライアントツールを利用する事も多いですが、今回は簡単・シンプルに利用・接続できる事でおすすめの「PortForwarder」というフリーツールを利用してみます。
インターフェースがとてもシンプル![Connect]ボタンをクリックしてパスワードを入力するだけでSSH接続とポートフォワードが一発で実行出来ます。
接続後はアプリ自身がタスクバーに格納されて隠れるので作業の邪魔になりません。
PortForwarderは以下のページからダウンロードできます。
PortForwarderダウンロードページ
バイナリから「PortForwarder-2.9.0.zip」をダウンロードし任意のフォルダを作成して解凍して下さい。
PortForwarderの設定方法
以下の設定はさくらインターネット、スタンダードプランのMySQLに接続する為のサンプル設定です。
- 解凍したフォルダにconfig.txtを作成しサーバへの接続情報を入力します。
Host:Test_Host(任意の接続名)
HostName:xxxxxx.sakura.ne.jp(接続するサーバのホスト名)
User:xxxxxx(SSH接続するユーザー名)
LocalForward:3306 mysqxxxxx.db.sakura.ne.jp:3306
(ポート転送を設定。さくらインターネットのMySQLのサーバ名、ポートを指定) - 解凍したファイルに「PortForwarder.exe」があります。一度起動させて下さい。
- exeを起動するとカレントフォルダに「PortForwarder.ini」が作成されます。これをメモ帳などのテキストエディタで開いてください。
- PortForwarder.iniの以下の項目にそれぞれの設定を記載して下さい。
ConfigFolder:インストールしたフォルダ名(例:C:\PortForwarder)
ConfigFile:作成したコンフィグファイル名(例:config.txt)
AutomaticallyHide:true(接続が完了した後に自動でタスクバーに隠れる設定)
※RecentHostはこの時点で入力しなくても大丈夫です。
PortForwarderを起動してSSH接続してみましょう。
それでは再度、PortForwarder.exeを起動しましょう。起動したら[Host:]のコンボボックスをクリックして先ほどコンフィグファイルに入力したホスト名を選択します。
[Connect]ボタンをクリックして接続しましょう。
初回接続時にはホストリストへの保存の確認メッセージが表示されます。ここは[はい]をクリックして次に進みましょう。
ログインパスワードの入力画面が表示されますのでパスワードを入力しましょう。
これで接続完了です。PortForwarderはタスクバーに格納され隠れます。
いかがでしょうか?かなり簡単では無いでしょうか?
MySQL ODBCの設定を行います
事前にMySQL ODBCはダウンロードしてインストールして下さい。
MySQL ODBCダウンロード
ダウンロードするODBCはご利用の環境にあわせて選択して下さい。尚、以前のエントリーでODBCに関する注意点もアップしていますのでそちらも合わせてご参考下さい。
MySQL ODBCの設定方法は以下の通りで、[TCP/IP Server]をlocalhost(または127.0.0.1)にする以外はその他同様の設定です。
※参考画面のODBCのバージョンは5.1です。
文字化けを防ぐため文字コードも設定しましょう。
[Details>>]をクリックして[Character set]にcp932を設定しましょう。
以上でMySQL ODBCの設定は完了です。
これでAccessやExcelからもODBC経由でMySQLを利用する事が可能になります。
“外部接続が許可されていないレンタルサーバのデータベースにローカルPCからODBC接続する” に対して4件のコメントがあります。
コメントは受け付けていません。
さくらのレンタルサーバ ビジネスではここに書いてある通りでできたのですが、マネージドサーバではできませんでした。
【状況】
PortForwarderで「Connect」ボタンで「Status: Connected」にはなるのですが、mysqlクライアントで接続しようとするとPortForwarderが「channel 2: open failed: connect failed: Connection refused」というメッセージを出し、切断されてしまう。
マネージドサーバのコントロールパネルでは「データベース サーバ」の欄は「localhost」書かれており、phpMyAdminのURLはhttps://secureXXXXX.sakura.ne.jp/phpmyadmin/となっています。
config.txtのHostNameにXXXXXX.sakura-ne.jp、secureXXXXX.sakura.ne.jpのどちらを指定してもダメでした。おそらく、サーバのセキュリティが厳しくなっていてそもそも無理なのだと思います。
もし、マネージドサーバでも成功した方がおられましたら情報をお願いします。
tsgrさん
コメントありがとうございます。
残念ながらマネージドサーバは使ったことがありませんが以下の設定ではだめでしょうか?
Host 任意の名称
HostName XXXXXX.sakura-ne.jp(もしくはサーバのIPアドレス)
User XXXXX
LocalForward 3306 localhost:3306
※既にお試しの場合は申し訳ありません・・・。
LocalForwardのところをlocalhostにですね。
これであっさり行けました。ありがとうございます。
うまくいって良かったです!