1

Я разрабатываю Java-программу, и мне нужна база данных. Сейчас я использую MAMP, и это довольно просто, но у меня будет виртуальная машина (сервер Ubuntu), и мне нужно подключить Java-программу к этой виртуальной машине с помощью vitualBox.

ситуация:

  • Я установил VirtualBox на свой Mac и установил компьютер с Ubuntu-сервером.
  • установить "мостовой адаптер" в настройках сети VB
  • Я установил MySQL на Ubuntu-сервер и создал простую базу данных (все работает хорошо Ubuntu)
  • делая ifconfig Ubuntu я получаю IP: 192.168.1.217

поэтому в Java-программе я сделал эту функцию:

public static Connection connect(String host, int port, String dbName, String user, String passwd)
{
    Connection dbConnection = null;
    try
    {
        String dbString = null;
        Class.forName("com.mysql.jdbc.Driver").newInstance();
        dbString = "jdbc:mysql://" + host + ":" + port + "/" + dbName;

        dbConnection = DriverManager.getConnection(dbString, user, passwd);

    }
    catch (Exception e)
    {
        System.err.println("Failed to connect with the DB");
        e.printStackTrace();
    }

    return dbConnection;
}

и в main() я использую:

Connection con = connect(1, "192.168.1.217", 3306, "Ciao", "root", "cocacola");

3306 было значением по умолчанию. Я не знаю, если это правильно, это работает на мампа, но ... Как я могу найти правильный порт, который я должен использовать с VB?

когда я запускаю программу, я получаю исключение по улову ... что не так?

2 ответа2

3

Проверьте файл /etc/my.cnf/ или /etc/mysql/my.cnf на наличие bind_address. Ваш MySQL по умолчанию привязывается к localhost, вы должны установить 0.0.0.0.

Найти:

bind-address            = 127.0.0.1

Заменить:

bind-address            = 0.0.0.0

Если у вас нет файла my.cnf, вы можете его создать. В этом случае вам понадобится как минимум это:

[mysqld]
bind-address            = 0.0.0.0
0

Ваш метод принимает неправильные параметры. сравнить

public static Connection connect(String host, int port, String dbName, String user, String passwd)

с

Connection con = connect(1, "192.168.1.217", 3306, "Ciao", "root", "cocacola");

Это означает, что при создании строки dbString вы создаете

jdbc:mysql://1:192.168.1.217/3306; 

Однако ваша перегрузка даже не совпадает, поэтому я удивлен, что вы зашли так далеко (хотя я делаю C #, а не Java, так что, возможно, это нормально)! Соединение Connection принимает 5 параметров, но когда вы вызываете метод, вы передаете 6!

Я думаю изменить

Connection con = connect(1, "192.168.1.217", 3306, "Ciao", "root", "cocacola"); 

в

Connection con = connect("192.168.1.217", 3306, "Ciao", "root", "cocacola");

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .