Сбой канала связи с jdbc и mysql в удаленном соединении

Я пытаюсь вставить данные из java-файла в базу данных mysql, установленную в другой системе.

Это мой java-файл

package serverDemo;

import java.sql.Connection;
import java.sql.DriverManager;
import java.util.Scanner;

import com.mysql.jdbc.PreparedStatement;
import com.mysql.jdbc.Statement;

public class TestIn {
    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);

        System.out.println("Enter the values");
        System.out.println("id:  ");
        int id = sc.nextInt();
        System.out.println("name:  ");
        String name = sc.next();
        System.out.println("age:  ");
        int age = sc.nextInt();

        try {
            Connection con=DriverManager.getConnection("jdbc:mysql://192.168.43.116:3306/datacollect","root","spectrum7tech");
            System.out.println ("Database connection established");

            /*Statement stmt=(Statement) con.createStatement();
            stmt.executeUpdate("insert into ser_test_detail.details("+id+",'"+name+"',"+age+")");*/

            PreparedStatement st=(PreparedStatement) con.prepareStatement("INSERT INTO datacollect.namedetails(id, name, age) VALUES(?,?,?)");
            st.setInt(1,id);
            st.setString(2,name);
            st.setInt(3,age);
            st.executeUpdate();

        } catch (Exception e) {
            // TODO: handle exception
             System.err.println("Got an exception! "); 
             System.err.println(e.getMessage()); 
             e.printStackTrace();
        }
    }
}

Данное имя хоста относится к другой системе, содержащей базу данных mysql.

Я получаю информацию об исключении в консоли

Enter the values
id:  
24
name:  
easrdtfghj
age:  
23
Got an exception! 
Communications link failure

Last packet sent to the server was 1 ms ago.
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

Last packet sent to the server was 1 ms ago.
    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:406)
    at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1074)
    at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2103)
    at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:718)
    at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:46)
    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:406)
    at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:302)
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:282)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at serverDemo.TestIn.main(TestIn.java:24)
Caused by: java.net.UnknownHostException: LAPTOP-6JMVNJOQ
    at java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method)
    at java.net.InetAddress$1.lookupAllHostAddr(Unknown Source)
    at java.net.InetAddress.getAddressesFromNameService(Unknown Source)
    at java.net.InetAddress.getAllByName0(Unknown Source)
    at java.net.InetAddress.getAllByName(Unknown Source)
    at java.net.InetAddress.getAllByName(Unknown Source)
    at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:243)
    at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:280)
    at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2026)
    ... 12 more

Я пробовал с IP-адресом вместо имени хоста.

Как я могу установить соединение?

Пожалуйста, помогите мне.


person Shambhu    schedule 10.03.2017    source источник
comment
Машина с MySQL установлена ​​в той же сети, что и вы?   -  person Anand Undavia    schedule 10.03.2017
comment
см. stackoverflow.com/a/15707789/2310289   -  person Scary Wombat    schedule 10.03.2017
comment
Нужно ли подключать обе системы в одну сеть?   -  person Shambhu    schedule 10.03.2017
comment
В большинстве простых случаев ДА. Если сервер базы данных и ваша система не находятся за одним и тем же маршрутизатором (в одной сети), серверу базы данных потребуется static public ip, чтобы к нему могли подключаться машины вне сети.   -  person Anand Undavia    schedule 10.03.2017
comment
Публичный IP-адрес должен быть установлен в URL-адресе БД?   -  person Shambhu    schedule 10.03.2017


Ответы (1)


1) заходим в my.cnf

2) Адрес привязки комментария (поскольку он принимает только локальные соединения)

"адрес-привязки = 127.0.0.1"

to

"#бинд-адрес = 127.0.0.1"

3) Перезапустите mysql

person Akshay Sonawane    schedule 10.03.2017
comment
Спасибо, но, пожалуйста, скажите, где мне найти my.cnf? - person Shambhu; 10.03.2017
comment
Пожалуйста, обратитесь по этой ссылке stackoverflow.com/questions/1712646/ - person Akshay Sonawane; 10.03.2017
comment
Я впервые сталкиваюсь с этой проблемой, нужно ли мне изменять файл my.cnf? - person Shambhu; 10.03.2017
comment
Да, как вы можете видеть, адрес привязки настроен на прием соединений только с локального хоста, поэтому он не позволяет вам подключаться с удаленного компьютера, измените его на 0.0.0.0 или просто прокомментируйте его. - person Akshay Sonawane; 10.03.2017
comment
Пожалуйста, поправьте меня, если я ошибаюсь. У меня есть 6 файлов с именем «my.cnf», и нет ни одного слова с именем bind или address. - person Shambhu; 10.03.2017
comment
dba.stackexchange.com/questions/76511/ - person Akshay Sonawane; 10.03.2017