MySQL: ошибка сбоя линии связи и локальный хост telnet 3306: соединение закрыто - PullRequest
1 голос
/ 31 марта 2011

Я пытаюсь подключиться к базе данных MYSQL через Java, где моя база данных SQL находится на локальном хосте.Я столкнулся с некоторыми проблемами, связанными с ошибкой канала связи.

public testfile() throws ClassNotFoundException, SQLException{

        Connection connection = null;
        try{
        Class.forName("com.mysql.jdbc.Driver").newInstance(); 
        connection = DriverManager.getConnection("jdbc:mysql://localhost/rts?user=root&password=password");
        System.out.println("Connected");
        }
        catch(Exception ex)
        {
            ex.printStackTrace();
        }
        finally
        {
            if(connection != null)
                connection.close();
        }
}

Трассировка стека:

com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception: 

** BEGIN NESTED EXCEPTION ** 

java.net.ConnectException
MESSAGE: Connection refused

STACKTRACE:

java.net.ConnectException: Connection refused
    at java.net.PlainSocketImpl.socketConnect(Native Method)
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:327)
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:193)
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:180)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:384)
    at java.net.Socket.connect(Socket.java:546)
    at java.net.Socket.connect(Socket.java:495)
    at java.net.Socket.<init>(Socket.java:392)
    at java.net.Socket.<init>(Socket.java:235)
    at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:256)
    at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:271)
    at com.mysql.jdbc.Connection.createNewIO(Connection.java:2771)
    at com.mysql.jdbc.Connection.<init>(Connection.java:1555)
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:285)
    at java.sql.DriverManager.getConnection(DriverManager.java:620)
    at java.sql.DriverManager.getConnection(DriverManager.java:222)
    at test.testfile.<init>(testfile.java:18)
    at test.mainfile.main(mainfile.java:9)


** END NESTED EXCEPTION **



Last packet sent to the server was 1 ms ago.
    at com.mysql.jdbc.Connection.createNewIO(Connection.java:2847)
    at com.mysql.jdbc.Connection.<init>(Connection.java:1555)
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:285)
    at java.sql.DriverManager.getConnection(DriverManager.java:620)
    at java.sql.DriverManager.getConnection(DriverManager.java:222)
    at test.testfile.<init>(testfile.java:18)
    at test.mainfile.main(mainfile.java:9)

Вывод Telnet:

telnet localhost 3306 
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Connection closed by foreign host.

Информация о пакете / программном обеспечении:

  • Eclipse Java EE IDE для веб-разработчиков.
  • Версия: Helios Service Release 1.
  • JDK6
  • Connector / J версия 5.0.8
  • Ubuntu: Ubuntu 10.04 LTS - Lucid Lynx

Я пробовал несколько вещей, но это не работает:

  • Я изменил порт в моем.cnf, но безрезультатно, я изменил на 3312 таких же повторов ошибок, и telnet показывает следующее:

    shreya@shreya-laptop:~$ telnet localhost 3306
    Trying 127.0.0.1...
    telnet: Unable to connect to remote host: Connection refused
    shreya@shreya-laptop:~$ telnet localhost 3312
    Trying 127.0.0.1...
    Connected to localhost.
    Escape character is '^]'.
    Connection closed by foreign host.
    

    Вывод nmap:

    shreya@shreya-laptop:~$ nmap localhost -p 3306
    
    Starting Nmap 5.00 ( [url]http://nmap.org[/url] ) at 2011-03-31 09:45 IST
    Interesting ports on localhost (127.0.0.1):
    PORT     STATE  SERVICE
    3306/tcp closed mysql
    
    Nmap done: 1 IP address (1 host up) scanned in 0.11 seconds
    shreya@shreya-laptop:~$ nmap localhost -p 3312
    
    Starting Nmap 5.00 ( [url]http://nmap.org[/url] ) at 2011-03-31 09:45 IST
    Interesting ports on localhost (127.0.0.1):
    PORT     STATE SERVICE
    3312/tcp open  unknown
    
    Nmap done: 1 IP address (1 host up) scanned in 0.06 seconds
    
  • Я попытался поставить записьв hosts.allow, но без эффекта

  • Я попытался переустановить mysql.Вставка данных через mysql prompt и c программа работает отлично, но не через java-код.

  • Я пытался добавить правила в таблицы ip, но это не помогает

  • Я пробовал разные комбинации строки URL.Я также пробовал разные версии файла Eclipse и Connector / Jar (последняя версия 5.1.15)

Ответы [ 3 ]

1 голос
/ 31 марта 2011

Сначала попытайтесь подключиться к MySQL, используя MYSQL Command Line Client, используя те же учетные данные, которые использовались в программе.

1 голос
/ 31 марта 2011

java.net.ConnectException: в соединении отказано

Просто нет ничего, что прослушивает / принимает соединения на данном хосте / порту. Проверьте следующее:

  • Проверьте в my.cnf, действительно ли номер порта 3306.
  • Проверьте, запущена ли БД (используйте инструмент администрирования БД MySQL).
  • Убедитесь, что БД принимает соединения TCP / IP, mysqld не должен иметь опцию --skip-networking.
  • Проверьте, не исчерпаны ли в БД соединения, при необходимости перезапустите его и исправьте весь существующий код Java, чтобы он правильно закрывал соединение в блоке finally.
  • Проверьте, не существует ли межсетевой экран / прокси, между которыми блокируются соединения на данном порту.
0 голосов
/ 31 марта 2011

Вам нужно дать разрешение пользователю, подключающемуся через порт 3306 ... У этого парня есть хорошее объяснение: ссылка

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...