2011-11-10 18 views
0

カスタマーサービス部門が引用を行うために使用する内部MySQLデータベースと、顧客が引用を行うために使用する外部MySQLデータベースがあります。私は内部データベースからの情報を私に書いたPHPレポートを持っています。今私は外部データベースからのデータを含むようにレポートを変更したいと思います。 SSH接続を使用して外部データベースに接続する必要があります。私はcURLまたはSSH2を使って調べてきましたが、どちらかがこれを行う正しい方法であるかどうかはわかりません。以前にウェブサーバにSSH MySQLデータベースを問い合わせた人がいましたか、誰かがこの仕事をするために何をする必要があるかを知っていますか?何か助けてくれてありがとう!SSHを使用してリモートWebサーバー上のMySQLデータベースを照会

+0

リモートサーバーのmysqlポートに外部から接続できますか?もしそうなら、他のmysqlサーバと同じようにサーバに接続することができます。 –

+0

これは、PHPでSSH2コードを使用する必要があると私は思っています。私は以前にそれをしていないので、それがうまくいくかどうかは分かりません。私は、SSH2が行く方法であるかどうかを判断するのに時間をかけすぎる前に、誰かがこれまでと同じようなことをしているのを見て、正しい方向に向けることができると考えました。私はcURLを調べ始めましたが、私が見たものから、私はそれが必要なことをするとは思いません。これまでのところ、私はSSH2でデータベースに接続してみる必要があると思っています。そして、接続したらクエリを実行できるかどうかを確認します。 – kheugel

+0

MySQLの接続プロトコルはSSL暗号化を許可しています。 mysqlポートを世界に公開したくない場合を除き、SSHやトンネリングを使う必要はありません:http://dev.mysql.com/doc/refman/5.0/en/secure-using- ssl.html –

答えて

1

私は実際には「Sequel Pro」と呼ばれるMySQL GUIクライアントを使用します。これはSSH接続を介してMySQLに接続するオプションを提供します。これは完全に実行可能ですが、DBなしでDBに接続するオプションがある場合(ホストの外部から接続するなど)、この方法をお勧めします。

SSHでDBをクエリするのが最も簡単な方法は、SSHポートフォワーディングを使用することです。つまり、ssh [email protected] -L3306:localhost:3306を実行するプロセスを生成し、MySQLコネクタをローカルホストに接続させることです。

SSHへの引数は、ローカルポート転送を行うように指示します。したがって、SSHはローカルポートでリッスンし、そこから受信したパケットを指定されたリモートホスト/ポートに直接転送します。明らかに私の例では両端でポート3306を使用していますが、これを適切に変更することができます(RTMでこれ以上のことがあります)

+0

+1、私にそれを打つ –

+0

私はウェブサーバー上でそのプロセスを生成するでしょうか?私たちのウェブサイトはホストされており、プロバイダーはこのようなことを行う際に最も役立つものではありません。これを有効にするにはこれが唯一の方法ですか、別の方法ですか? Navicatを使用してデータベースにリモートログインできることを述べる必要があります...私はPHPコード内から行う方法を探しています。ありがとう! – kheugel

+0

@kheugelはい、SSHはサーバー側です。 Navicatをどうやってやっていますか?あなたのためにSSHチューニングをしていますか?'ssh'を起動することができない場合や、PHPの中から' OpenSSH' APIを使用しない場合は、不運になります。データを他の方法で取得する必要があります。 – Romain

0

はい、SSHでbashからmysqlに問い合わせることができます。最善のソリューションは、運用サーバー上にREST Webサービスを作成することです。次に、内部システムは、そのリモートサービスに認証を照会します。

+0

これを行う方法はありますか? –

+0

多分、これをやっている無限の数があります、古いと新しい方法で、しかし、私はこれを持って簡単な何かのための高速なGoogleをやった:http://robertobartolome.com/a-単純な - ウェブサービス - 使用 - php-json-and-mysql/https://github.com/memaker/webservice-php-jsonというコードは、あなたの仕事を始めるための単なる例に過ぎません。 –

0

あなたは、ローカルサーバー上のいくつかの利用可能なポートからリモートサーバ上のMySQLポートにトンネルを設定:

ssh -L 3307:localhost:3306 [email protected] 

ポートに接続し、ローカルシステム上のポート3307でリッスンしてトンネルを作成します3306(MySQL)をリモートサーバ上に作成します。

PHPコードで3306の代わりにポート3307に接続すると、remoteserverのmysqlにトンネリングされます。

関連する問題