我有一個在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')
我寫這段代碼在phpMyAdmin的SQL部分,我得到下面的輸出:
Variable_name Value
hostname ip-172-31-23-224
port 0
我不知道該怎麼做端口0意味着,它應該是3306(MySQL默認端口)。 ..
無論如何,我不知道我是否做了xampp配置錯誤,或者如果它是AWS或其他問題。
有人可以幫助我嗎?非常感謝你。
我可以通過SSH訪問機器。在我的安全組中,我從任何IP地址打開了HTTP,SSH,MySQL/Aurora和ICMP端口。你知道我該如何檢查運行mysql的端口?我在我的問題中嘗試了這段代碼,但我得到了端口0.謝謝你的回答! – Cayetano
你可以通過'netstat -tlnp'來查看它正在監聽的端口。或者你可以安裝nmap並使用'nmap localhost' –
我只能看到21,22,80和443端口,所以它看起來像mysql不聽。我重新啓動了mysql,但仍然沒有顯示它的端口。 – Cayetano