首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法从我的java应用程序访问mysql数据库(运行在AWS实例上)

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

Stack Overflow用户
提问于 2016-04-15 15:23:53
回答 2查看 907关注 0票数 0

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

另一方面,我有一个需要与数据库连接的Java应用程序,我的代码中有下面一行来实现它:

代码语言:javascript
复制
con = DriverManager.getConnection("jdbc:mysql://public_ip/androiddb",
                                  "root", "");

当我运行我的应用程序时,我会得到以下错误:

代码语言:javascript
复制
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运行的端口,并使用了以下代码:

代码语言:javascript
复制
SHOW VARIABLES
WHERE Variable_name IN (
'hostname',
'port')

我在SQL部分用phpmyadmin编写了这段代码,得到了以下输出:

代码语言:javascript
复制
Variable_name   Value
hostname        ip-172-31-23-224
port            0

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

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

有人能帮我吗?非常感谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-04-15 15:26:49

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

您可以麻烦的拍摄试图SSH进入机器,你能在本地连接吗?如果是,请查看您的安全组并打开端口。如果不能在本地连接,数据库就关闭了,需要正确地诊断和配置DB。

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

只是想补充一下解决了他的问题:

  1. 他检查了他的安全小组并打开了正确的端口
  2. 在本地检查,以确定mySQL没有监听任何端口
  3. netstat -tlnp以检查SQL是否在本地运行
  4. 检查my.ini文件,以查看mysql配置为侦听端口。
  5. 发现它不是,并重新配置它来听
票数 1
EN

Stack Overflow用户

发布于 2020-12-09 02:20:32

这可能有助于一些使用phpMyAdmin和AWS以及亚马逊的关系数据库服务( RDS )的人知道,除非将RDS端点编辑到config.inc.php文件中的"localhost“或"127.0.0.1”位置,否则phpMyAdmin将无法工作。(这是一个必要但不充分的解决办法-你可能需要做其他的事情.)

泛化一点,如果您使用foo并且它有一个配置文件,并且您希望连接到在RDS下实例化的数据库,那么您将需要该端点作为主机条目。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36651099

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档