2016-04-09 4 views
0

私の考えは次のようなものです:プロバイダは外部のmysqlリクエストを許可しません。私はローカルのjavaとリモートサーバのjavaを接続するための解決策を探しています。リモートjavaサーバはmysqlリクエストを作成し、それを送り返します。 アイデア/私のためのリンク?どのようにmysql要求のためにリモートサーバーjavaとローカルJavaプログラムを接続しますか?

答えて

3

port forwardingでこれを行うことができます。ssh to setup a tunnelを使用できます。したがって、Javaサーバープログラムを書く必要はありません。

最後のリンクはあなたの正確な問題の例ですが、PostgreSQLデータベースに接続していますが、その情報を以下のMySQLに翻訳しました。あなたが唯一のセキュリティ上の理由から、ローカル接続を可能にするデータベースのコンソールに接続する必要がある場合


ここでの例があります。あなたは、サーバー上のMySQLを実行しているとしましょう、ここで変更デフォルトでポート3306

$ ssh -L 9000:localhost:3306 [email protected] 

でリッスン部分はlocalhostです:3306、あなたの地元からの接続を転送するために述べていましたサーバー上のポート9000からローカルホスト:3306。これで簡単にデータベースに接続できます。

$ mysql -h localhost -p 9000 

今、あなたの地元のJava JDBCプログラムは、URL jdbc:mysql://localhost:9000/dbnameと接続し、それがローカル接続のように、あなたのトンネル接続を見ることがリモート・データベースにトンネルされますことができるはずです。

Connection c = DriverManager.getConnection("jdbc:mysql://localhost:9000/dbname","username", "password"); 
+0

ああ、私は書いて忘れました....問題は、データベースが無料のWebスペースプロバイダにあり、私は自分のアプリケーションをテストするために使用したいと考えています。だから私はdbコンソールの変更を行うことができません – Newbster

+0

最後の段落は、javaから接続する方法についてです。私は答えを更新して、この回答のためにもっと明確になるようにします。 – gustf

+0

thxたぶんプロバイダの名前で説明してください。この種のhttps://www.bplaced.net/はこのextern conenctionを許可しませんでした。 Externは "Connection c = DriverManager.getConnection(" jdbc:mysql://username.bplaced.net:3603/dbname "、" username "、" password ");"動いていない。とにかく、他のプロバイダが見つかりました。プロバイダがjavaファイルがサーバ上にある場合は、このlocalhostで動作するよりも、どうすればいいのですか? (悪い英語の文法には申し訳ありませんが、あなたが理解できることを願っています) – Newbster

関連する問題