2015-07-21 3 views
0

Я попытался создать приложение в Java, которое работает с удаленной базой данных. Приложения отлично работают в локальной базе данных. Я также включил номер порта. Я боюсь, что это IP-адрес, который я использую.Удаленная база данных

Я подумал, что могут быть сотни, если не тысячи компьютеров по всему миру с тем же IP-адресом, что и мой ... и как Интернет видит, какой я есть, или оставаться в безопасности. Я уверен, что вы не даете удаленный доступ к IP-адресу вашего компьютера вашей домашней сети, но я могу ошибаться ... Я, честно говоря, не знаю.

Это моя функция.

public void db() { 
    try { 
     Class.forName("com.mysql.jdbc.Driver"); 
     Connection myCon = DriverManager.getConnection("jdbc:mysql://IPOfWebSite:3306/DatabaseName", "UserName", "Password"); 
     System.out.println("Connected"); 
     myCon.close(); 
    } catch (Exception ex) { 
     ex.printStackTrace(); 
    } 
} 

На пульте DB я добавил свой публичный IP-адрес, но все-таки получил эту ошибку

"C:\Program Files\Java\jdk1.8.0_25\bin\java" -Didea.launcher.port=7532 "-Didea.launcher.bin.path=C:\Program Files (x86)\JetBrains\IntelliJ IDEA Community Edition 14.1.3\bin" -Dfile.encoding=windows-1252 -classpath "C:\Program Files\Java\jdk1.8.0_25\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.8.0_25\jre\lib\deploy.jar;C:\Program Files\Java\jdk1.8.0_25\jre\lib\javaws.jar;C:\Program Files\Java\jdk1.8.0_25\jre\lib\jce.jar;C:\Program Files\Java\jdk1.8.0_25\jre\lib\jfr.jar;C:\Program Files\Java\jdk1.8.0_25\jre\lib\jfxswt.jar;C:\Program Files\Java\jdk1.8.0_25\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.8.0_25\jre\lib\management-agent.jar;C:\Program Files\Java\jdk1.8.0_25\jre\lib\plugin.jar;C:\Program Files\Java\jdk1.8.0_25\jre\lib\resources.jar;C:\Program Files\Java\jdk1.8.0_25\jre\lib\rt.jar;C:\Program Files\Java\jdk1.8.0_25\jre\lib\ext\access-bridge-64.jar;C:\Program Files\Java\jdk1.8.0_25\jre\lib\ext\cldrdata.jar;C:\Program Files\Java\jdk1.8.0_25\jre\lib\ext\dnsns.jar;C:\Program Files\Java\jdk1.8.0_25\jre\lib\ext\jaccess.jar;C:\Program Files\Java\jdk1.8.0_25\jre\lib\ext\jfxrt.jar;C:\Program Files\Java\jdk1.8.0_25\jre\lib\ext\localedata.jar;C:\Program Files\Java\jdk1.8.0_25\jre\lib\ext\nashorn.jar;C:\Program Files\Java\jdk1.8.0_25\jre\lib\ext\sunec.jar;C:\Program Files\Java\jdk1.8.0_25\jre\lib\ext\sunjce_provider.jar;C:\Program Files\Java\jdk1.8.0_25\jre\lib\ext\sunmscapi.jar;C:\Program Files\Java\jdk1.8.0_25\jre\lib\ext\sunpkcs11.jar;C:\Program Files\Java\jdk1.8.0_25\jre\lib\ext\zipfs.jar;H:\Java Dev\Simple_java_DB\out\production\Simple_java_DB;H:\Java Dev\Simple_java_DB\mysql-connector-java-5.1.35\mysql-connector-java-5.1.35\mysql-connector-java-5.1.35-bin.jar;C:\Program Files (x86)\JetBrains\IntelliJ IDEA Community Edition 14.1.3\lib\idea_rt.jar" com.intellij.rt.execution.application.AppMain Main 
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:389) 
    at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1038) 
    at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:338) 
    at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2237) 
    at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2270) 
    at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2069) 
    at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:794) 
    at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:44) 
    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:389) 
    at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:399) 
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:325) 
    at java.sql.DriverManager.getConnection(DriverManager.java:664) 
    at java.sql.DriverManager.getConnection(DriverManager.java:247) 
    at Main.db(Main.java:24) 
    at Main.main(Main.java:15) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:483) 
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:140) 
Caused by: java.net.ConnectException: Connection refused: 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 com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:213) 
    at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:297) 
    ... 21 more 

Любая помощь будет большим. Кстати, я проверял свой брандмауэр ... он должен позволять порту получать и отправлять.

+0

Вы пытаетесь получить к нему доступ с IP-адресом, похожим на 192.168 ..? –

+0

Вы уверены, что порты, которые вы пытаетесь подключить, не заблокированы? –

+0

Да, мой компьютер IP-адрес - 192.168. – master

ответ

0

1) Убедитесь, что вы хотите добавить ваш внешний IP, а не внутренней сети IP (192.168.x.x).

Перейдите по ссылке: https://www.whatismyip.com/ и используйте этот IP-адрес для белого IP-адреса в удаленном брандмауэре БД и/или ограничениях доступа.

2) Убедитесь, что ваш пользователь mysql настроен с правильным хостом, либо 'user' @ 'your-external-ip', либо 'user' @ '%' (чтобы этот пользователь мог подключаться из любого IP).

3) Убедитесь, что ваш my.conf настроен на дистанционное подключение. Убедитесь, что вы не связываясь с 127.0.0.1, а не временно сделать:

bind-address = 0.0.0.0; 

Вы должны установить это с реальным IP вашего сервера, но 0.0.0.0 будет работать для любого IP и просто должны быть временно использованы для проверки что это твоя проблема. В долгосрочной перспективе это может представлять угрозу безопасности, чтобы оставить ее равной 0.0.0.0.

Также убедитесь, что вы не пропустите сеть. Убедитесь, что эта строка является комментарием (с # перед ним):

# skip-networking 
+0

попробует это быстро – master

+0

не сработает, добавит мою ошибку на вопрос – master

+0

Обновлен мой ответ. Правильно ли добавлен ваш пользователь в mysql? –

1

MySQL делает по умолчанию прослушивать только локальный интерфейс (петлевой). Таким образом, вы можете добраться до него только с локальной машины.

Чтобы это изменить, адаптировать конф MySQL:

[mysqld] 
bind-address=YOUR-SERVER-IP 

Кроме того, убедитесь, что конфигурация skip-networking закомментирована или нет.

Подробнее here.

+0

Я не контролирую сервер, поэтому я не могу получить доступ к файлам conf ... Его размещенный веб-сайт, на котором я хочу получить доступ к DB – master

+0

Вы говорили с администратором веб-сайта и он сказал, что БД на самом деле доступна. БД большинства веб-сайтов недоступны. Вы можете попробовать это с помощью инструмента администрирования MySQL, такого как MySQL Workbench. Если это не сработает, проблема, скорее всего, не будет в вашем коде. – gzm0