2017-01-13 4 views
2

Я пытаюсь подключиться к базе данных mysql с помощью jdbc. Вот мое подключение к базе данных Класс:jdbc: Не удалось создать соединение с сервером базы данных

public class Database { 
    String userName = "myUserName"; 
    String password = "myPass"; 

    String url = "jdbc:mysql://xxx.xxx.xxx.xxx:3306/database_Name?autoReconnect=true&useSSL=false"; 

    public void connect() 
    { 
     try { 
      Class.forName("com.mysql.jdbc.Driver").newInstance(); 

      Connection conn = DriverManager.getConnection(url,userName,password); 

      Statement statement = conn.createStatement(); 
      String queryString = "select * from users"; 
      ResultSet rs = statement.executeQuery(queryString); 
      while (rs.next()) { 
       System.out.println(rs.getString(2)); 
      } 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 
} 

На данный момент, вы можете считать, что я называю этот метод, как:

new Database().connect(); 

И я получаю это исключение:

com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up. 
    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:423) 
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:425) 
    at com.mysql.jdbc.Util.getInstance(Util.java:408) 
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:918) 
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:897) 
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:886) 
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:860) 
    at com.mysql.jdbc.ConnectionImpl.connectWithRetries(ConnectionImpl.java:2163) 
    at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2088) 
    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(NativeConstructorAccessorImpl.java:62) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423) 
    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(DriverManager.java:664) 
    at java.sql.DriverManager.getConnection(DriverManager.java:247) 
    at Database.<init>(Database.java:17) 
    at ServerTest.main(ServerTest.java:8) 
    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:498) 
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147) 
Caused by: 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:423) 
    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.connectWithRetries(ConnectionImpl.java:2104) 
    ... 19 more 
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:350) 
    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:211) 
    at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:300) 
    ... 21 more 

* Я добавил% для доступа к базе данных с удаленного.

* Java часть работает для localhost, но когда я пытаюсь использовать эту удаленную базу данных, она терпит неудачу.

* созданы базы данных и таблицы. (Нет никаких проблем по этому поводу.)

Итак, где проблема?

+0

Вы покинули сервер MySql? У вас пароль и пользователь? – Gatusko

+0

Да, это так, мой сайт также работает с этим сервером. Я пробовал с двумя разными именами и паролями, не работал. –

+0

Я не могу найти ошибку в вашем коде. Все в порядке. Единственное место, которое может быть плохо, это конфигурация сервера MySql, попробуйте запустить querry через командную строку и посмотреть, действительно ли работает или принимает соединения из других мест. – Gatusko

ответ

2

Java часть работает на локальный, но когда я пытаюсь эту удаленную базу данных, она не

Это означает, что ваш сервер MySql связан локальный и не виден снаружи. Укажите bind-address объект недвижимости в вашем файле конфигурации MySql на адрес , действительный IP-адрес хозяина.

Например: связывать-адрес = 192.168.1.26

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

+0

Я не использую vps.I купил хостинг у компании. Предположим, у меня нет доступа к mysql conf. –

+0

В этом случае должен быть настроен пользовательский интерфейс для настройки MySql. – code

+0

Я не думаю, что есть способ настроить MySql для размещения клиента. –

Смежные вопросы