无法从我的java应用程序访问mysql数据库(在AWS实例上运行)

时间:2016-04-15 15:23:53

标签: mysql amazon-ec2 xampp

我有一个运行在AWS-EC2 Ubuntu实例上的xampp服务器,我在那里有一个名为“androiddb”的数据库。我可以通过在导航器http://public_ip/phpmyadmin中写入并使用“root”用户输入而无需输入密码来访问数据库。

另一方面,我有一个需要与该数据库连接的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中写了这段代码,得到以下输出:

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

我不知道端口0是什么意思,它应该是3306(默认的mysql端口)......

无论如何,我不知道我是否在xampp配置上做错了,或者是否是AWS或其他任何问题。

有人可以帮我吗?非常感谢你。

2 个答案:

答案 0 :(得分:1)

您应确保AWS的安全组在3306端口(或您配置的任何内容)上打开,以便他们可以访问数据库。

你可以通过尝试SSH进入机器来解决问题,你可以在本地连接吗?如果是,请查看您的安全组并打开端口。如果您无法在本地连接,则数据库已关闭,您需要正确诊断和配置数据库。

但拒绝连接很可能是安全组中没有打开的端口。

只是添加解决了他的问题:

  1. 他检查了他的安全组并打开了正确的端口
  2. 在本地检查以查看mySQL没有侦听任何端口
  3. nrowspecies4(iris, NA)检查以查看本地运行的SQL
  4. 检查my.ini文件以查看mysql是否配置为侦听端口
  5. 发现它没有并重新配置它来听

答案 1 :(得分:0)

这可能会帮助一些使用phpMyAdmin和AWS以及亚马逊的关系数据库服务(RDS)的人了解phpMyAdmin将无法工作,除非将RDS终结点编辑到config.inc中的“ localhost”或“ 127.0.0.1”位置.php文件。 (这是必要但不足够的修复程序,您可能需要做其他事情...)

概括一下,如果您正在使用 foo 并且它具有一个 config 文件,并且您希望连接到RDS下实例化的数据库,则需要该端点作为 host 条目。

相关问题