나는 많은 질문을 받았다. 그러나 많은 해결책을 찾으려 고 시도한 후에 나는 내 DB에 연결할 수 없다.Java jdbc가 원격 LAN 서버의 mariadb에 연결
저는 PC에서 일하고 있으며 LAN상의 다른 컴퓨터에서 mariadb mysql 서버에 연결하려고합니다. 하지만 내 프로그램이 어디서나 내 mysql 서버에 연결할 수있는 방식으로하고 싶습니다. mysql이있는이 컴퓨터뿐만 아니라 LAN에있는 PC도 마찬가지입니다.
외부 IP를 사용하고 라우터에서 mysql 포트를 전달하면 트릭을 수행 할 수 있다고 생각되지만 '통신 실패'오류가 발생합니다.
지금까지 내가 확신했다 :
- -user, DB 이름이 올바른지
- -port이며, 통과하는 것은 기본 3306
- -in MySQL의 설정 I 장애인 바인드-ADRESS
- -in입니다 mysql 내 사용자는 모든 호스트와 외부 IP에서 연결할 수 있습니다 ...
- - 데이터베이스가 비어 있습니다.
- - 다른 데이터베이스가 작동 중입니다. php can co nnect하지만 동일한 서버에서 실행되므로 'localhost'에 연결 중임
- -DriverManager.getConnection ("jdbc : mysql : // MY_IP : 3306/my_DB", "javauser", "javauserpass");
- - mysql 서버가 설치된 컴퓨터 (UbuntuServer) iptables가 구성되지 않았습니다.
- -I xampp가 설치되어 거기에 db가 생성되었습니다. 로그인 쿼리 문자열에 'localhost'를 사용하여이 db에 연결할 수 있습니다. 하지만 그건 내 프로그램이 로컬에서만 작동하도록 만든다.
- -inactive 방화벽은 아무것도 변경하지 않습니다 - 여전히 연결
오류 :
-------- MySQL JDBC Connection Testing ------------
MySQL JDBC Driver Registered!
Connection Failed! Check output console
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(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:425)
at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:989)
at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:341)
at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2251)
at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2284)
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2083)
at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:806)
at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:425)
at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:410)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:328)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at Main.main(Main.java:25)
Caused by: java.net.ConnectException: Connection timed out: connect
at java.net.DualStackPlainSocketImpl.connect0(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source)
at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source)
at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source)
at java.net.AbstractPlainSocketImpl.connect(Unknown Source)
at java.net.PlainSocketImpl.connect(Unknown Source)
at java.net.SocksSocketImpl.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:211)
at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:300)
... 15 more
내 예를 들어, 테스트 프로그램은 여기에서 가져온 것입니다 : https://www.mkyong.com/jdbc/how-to-connect-to-mysql-with-jdbc-driver-java/
를 그래서 나는 어디에 만드는 중이라서 잘못?
이 의미는 무엇이며 데이터베이스 연결과 어떤 관련이 있습니까? "내 프로그램은 내 LAN 외부의 PC에서 친구들이 편집 할 수 있습니다" –
이것은 전혀 이해가되지 않습니다. 친구가 당신의 LAN 외부 또는 심지어 당신의 LAN 내에서 프로그램을 편집 할 수있게하려면 GitHub 또는 BitBucket에 소스 코드를 호스팅하십시오. 당신의 mariadb 연결로하는 일은 절대적으로 당신의 프로그램을 편집하는 친구들과 아무런 관련이 없습니다. –
모든 Java 비트를 1 초 동안 무시합니다. 'telnet'(또는'nc ')을하면 어떻게됩니까? 이 예외는 연결 시간 초과 예외 일 뿐이므로 다른 네트워크에 있거나 포트가 방화벽으로 연결된 것처럼 보입니다. –