2016-04-15 19 views
0

AWS-EC2 Ubuntuインスタンス上でxamppサーバを実行していて、そこに「androiddb」というデータベースがあります。私は、ナビゲータhttp://public_ip/phpmyadminに書き込み、 "root"ユーザとパスワードなしで入力することでデータベースにアクセスできます。別の側面でJavaアプリケーションからmysqlデータベース(AWSインスタンス上で実行中)にアクセスできません

私はそのデータベースに接続する必要があるJavaアプリケーションを持っている、と私はそれを行うには自分のコードに次の行を持っている:私は自分のアプリケーションを実行すると

con = DriverManager.getConnection("jdbc:mysql://public_ip/androiddb", 
            "root", ""); 

、私は次の取得エラー:

Error: Communications link failure due to underlying exception: 

** BEGIN NESTED EXCEPTION ** 

java.net.SocketException 
MESSAGE: java.net.ConnectException: Connection refused 

STACKTRACE: 

java.net.SocketException: java.net.ConnectException: Connection refused 
at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:156) 
at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:284) 
at com.mysql.jdbc.Connection.createNewIO(Connection.java:2569) 
at com.mysql.jdbc.Connection.<init>(Connection.java:1485) 
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:266) 
at java.sql.DriverManager.getConnection(DriverManager.java:571) 
at java.sql.DriverManager.getConnection(DriverManager.java:215) 
at Presentacion.Presentacion$2.mouseClicked(Presentacion.java:125) 
at java.awt.Component.processMouseEvent(Component.java:6519) 
at javax.swing.JComponent.processMouseEvent(JComponent.java:3321) 
at java.awt.Component.processEvent(Component.java:6281) 
at java.awt.Container.processEvent(Container.java:2229) 
at java.awt.Component.dispatchEventImpl(Component.java:4872) 
at java.awt.Container.dispatchEventImpl(Container.java:2287) 
at java.awt.Component.dispatchEvent(Component.java:4698) 
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832) 
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4501) 
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422) 
at java.awt.Container.dispatchEventImpl(Container.java:2273) 
at java.awt.Window.dispatchEventImpl(Window.java:2719) 
at java.awt.Component.dispatchEvent(Component.java:4698) 
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:747) 
at java.awt.EventQueue.access$300(EventQueue.java:103) 
at java.awt.EventQueue$3.run(EventQueue.java:706) 
at java.awt.EventQueue$3.run(EventQueue.java:704) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) 
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87) 
at java.awt.EventQueue$4.run(EventQueue.java:720) 
at java.awt.EventQueue$4.run(EventQueue.java:718) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) 
at java.awt.EventQueue.dispatchEvent(EventQueue.java:717) 
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242) 
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161) 
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150) 
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146) 
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138) 
at java.awt.EventDispatchThread.run(EventDispatchThread.java:91) 


** END NESTED EXCEPTION ** 



Last packet sent to the server was 19 ms ago. 

はまた、私は、MySQLが動作していたポートのために見て、私は、コードを使用:

SHOW VARIABLES 
WHERE Variable_name IN (
'hostname', 
'port') 

私は、SQLセクションにphpmyadminの中にコードのこの部分を書き、私は次のような出力が得られます。私は、ポート0が何を意味するのか分からない

Variable_name Value 
hostname  ip-172-31-23-224 
port   0 

、それは3306(デフォルトのMySQLポート)でなければなりません。 ..

とにかく、私がxamppの設定に間違っているのか、それともAWSの問題なのか、それ以外のことはわかりません。

誰かが私にこれを手伝ってもらえますか?どうもありがとうございました。

答えて

1

AWSのセキュリティグループが3306ポート(または設定したもの)で開いていることを確認して、データベースにアクセスできるようにする必要があります。

マシンにSSH接続しようとすると問題が発生する可能性がありますが、ローカルに接続できますか?はいの場合は、セキュリティグループを見てポートを開きます。ローカルに接続できない場合は、データベースがダウンしているため、DBを正しく診断および構成する必要があります。

しかし、接続が拒否された可能性は、ポートがセキュリティグループで開かれていない可能性があります。ただ、彼の問題を解決するもの追加する

  1. 彼はセキュリティグループをチェックし、MySQLがチェックするために、任意のポート
  2. netstat -tlnpに聞いていなかったことを確認するために、ローカルにチェック正しいポート
  3. を開設ローカルに実行されているSQLを確認する
  4. mysqlがポートでリッスンするように設定されていることを確認するためにmy.iniファイルを確認しました。
  5. リッスンするように設定されていませんでした。
+0

私はSSHでマシンにアクセスできます。私のセキュリティグループでは、任意のIPアドレスからHTTP、SSH、MySQL/Aurora、ICMPポートを開いています。あなたはmysqlが実行されているポートを確認する方法を知っていますか?私は私の質問でそのコードを試しましたが、私はポート0を持っています。あなたの答えをありがとう! – Cayetano

+0

'netstat -tlnp'を実行すると、それが聞いているポートを確認できます。またはnmapをインストールしてnmap localhostを使用することができます –

+0

21,22,80,443のポートしか見ることができないので、mysqlがリッスンしていないようです。私はmysqlを再起動しましたが、ポートは表示されません。 – Cayetano

関連する問題