Java 코드를 사용하여 웹 서버에 설치된 MySQL 데이터베이스에 액세스하려고합니다. 내 Java 응용 프로그램은 내 PC에서 실행중인 Swing 응용 프로그램입니다. 아래 자바 코드입니다.Java : JDBC를 사용하여 원격 MySQL 데이터베이스에 액세스 할 수 없습니다.
import java.io.File;
import java.io.IOException;
import java.io.PrintStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.prefs.Preferences;
public class TestDatabase {
private Connection con;
private void connect()
{
try
{
Class.forName("com.mysql.jdbc.Driver");
con = DriverManager.getConnection("jdbc:mysql://72.0.0.0:3306/aceko_test","aceko_me","rtf7890");
System.out.println("Connection Established");
}
catch(Exception e)
{
e.printStackTrace();
}
}
public static void main(String[]args)
{
new TestDatabase().connect();
}
}
아래 오류가 나타납니다.
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:408)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1129)
at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:358)
at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2498)
at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2535)
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2320)
at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:834)
at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:46)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:408)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:416)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:347)
at java.sql.DriverManager.getConnection(DriverManager.java:664)
at java.sql.DriverManager.getConnection(DriverManager.java:247)
at TestDatabase.connect(TestDatabase.java:31)
at TestDatabase.main(TestDatabase.java:43)
Caused by: java.net.ConnectException: Connection timed out: connect
at java.net.DualStackPlainSocketImpl.connect0(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:79)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:345)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:589)
at java.net.Socket.connect(Socket.java:538)
at java.net.Socket.<init>(Socket.java:434)
at java.net.Socket.<init>(Socket.java:244)
at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:256)
at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:308)
... 16 more
나는 원격 액세스를 할당하는 내 웹 서버의 CPanel
에서 최고의 내 지식을 했어요. 당신은 이미지 아래에서 볼 수 있듯이, 나는 "모든 액세스"당신은 아래 이미지에서 볼 수 있듯이, 나는 데이터베이스, 사용자가 만든
을 제공하고, 데이터베이스에 사용자를 할당했다.
내 코드에서 언급 한 IP는 SO의 사용을 위해, 가짜 유의하시기 바랍니다.
미안하지만 자바 코드가 데스크톱 응용 프로그램으로 실행되고 있습니까? – Jessai
@ 예래 : 예, 스윙 어플입니다. –
나는 PHP에서 같은 것을 시도한 것을 기억한다. 코드에 연결할 수없는 이유는 안전하고 정적 인 IP가 필요하기 때문입니다. 기꺼이 수정 해주세요. 내가 틀렸다면 : D – Jessai