我有一个运行在AWS-EC2Ubuntu实例上的xampp服务器,那里有一个名为"androiddb“的数据库。我可以通过在导航器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或其他任何问题。
有人能帮我吗?非常感谢。
发布于 2016-04-15 15:26:49
您应该确保AWS的安全组在3306端口上打开(或您配置的任何端口),以便它们能够访问数据库。
您可以麻烦的拍摄试图SSH进入机器,你能在本地连接吗?如果是,请查看您的安全组并打开端口。如果不能在本地连接,数据库就关闭了,需要正确地诊断和配置DB。
但是,拒绝连接很可能是安全组中没有打开的端口。
只是想补充一下解决了他的问题:
netstat -tlnp以检查SQL是否在本地运行发布于 2020-12-09 02:20:32
这可能有助于一些使用phpMyAdmin和AWS以及亚马逊的关系数据库服务( RDS )的人知道,除非将RDS端点编辑到config.inc.php文件中的"localhost“或"127.0.0.1”位置,否则phpMyAdmin将无法工作。(这是一个必要但不充分的解决办法-你可能需要做其他的事情.)
泛化一点,如果您使用foo并且它有一个配置文件,并且您希望连接到在RDS下实例化的数据库,那么您将需要该端点作为主机条目。
https://stackoverflow.com/questions/36651099
复制相似问题