Mysql соединяется нормально с локальным хостом, но не соединяется с IP-адресом - PullRequest
0 голосов
/ 23 ноября 2018

У меня есть Java-программа, которая берет информацию из MySQL, она прекрасно работает, когда я использую localhost для подключения к ней, но всякий раз, когда я помещаю в нее ipaddress, она не работает.Мой код подключения и исключения следующие:

package connection;

import java.net.InetAddress;
import java.sql.Connection;
import java.sql.DriverManager;

/**
 *
 * @author rpsal
 */
public class DBConnection {

    public static Connection connect()//working  on local host
    {
        Connection conn = null;
        try {
            Class.forName("com.mysql.jdbc.Driver");
            String url = "jdbc:mysql://"+getIpAddress()+"/ChatMaster";
            conn = DriverManager.getConnection(url, "root", "");
        } catch (Exception e) {
            System.out.println("Exception in connect" + e);
        }
        return conn;
    }

    public static String getIpAddress() throws Exception {
        InetAddress inetAddress = InetAddress.getLocalHost();
        return inetAddress.getHostAddress();
    }
}

Когда я использую String url = "jdbc:mysql:///ChatMaster";, он работает нормально.Исключение, которое я получаю, следующее:

Exception in connectjava.sql.SQLException: null,  message from server: "Host 'Rp-Salh' is not allowed to connect to this MySQL server"

Ответы [ 6 ]

0 голосов
/ 23 ноября 2018

Как оказалось @ Ян.St указал мне правильное направление, так как проблема не была в моем коде или в проблеме с ipaddress, это просто то, что по умолчанию удаленный root-доступ отключен в mysql.Я просто следовал за ответом по следующей ссылке, и он работал.

Как разрешить удаленное подключение к mysql

Примечание: убедитесь, что вы также следуете 2-му ответу в том жеопубликовать, если первый ответ сам по себе не сработал.

0 голосов
/ 23 ноября 2018

Обновите файл конфигурации mysql (возможно, в каталоге файлов сервера, etc / mysql / my.conf), проверьте, настроен ли он как 127.0.0.1 (по умолчанию) в качестве адреса хоста, и измените его на свой IP.

0 голосов
/ 23 ноября 2018

Вы должны убедиться, что 2 вещи.

  1. Убедитесь, что порт MySQl 3306 уже открыт или нет.Вот пример удаленного подключения String

    String url = "jdbc: mysql: //192.168.1.121: 3306 / ChatMaster";

  2. Проверьте имя пользователя базы данных и парольправильно.

0 голосов
/ 23 ноября 2018

Как я вижу из журнала ошибок.InetAddress.getLocalHost(); не возвращает правильный IP-адрес.

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

Вы можете получить системный IP-адресв окнах, набрав ipconfig на CMD.

0 голосов
/ 23 ноября 2018

Я думаю, inetAddress.getHostAdress() вернет имя хоста (например, Rp-Salh), поэтому я рекомендую вам использовать этот метод

inetAddress.getLocalHost()
0 голосов
/ 23 ноября 2018

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

Я не знаю, то же самое ли для MySQL, но для postgresql мне нужно было определить в базе данных, чтобы разрешить удаленные подключения.

...