не удается подключиться к базе данных mysql - PullRequest
1 голос
/ 11 октября 2011

Самая последняя проблема - «Третья ошибка», перечисленная ниже.

Я работаю над приложением в Java, которое должно подключиться к базе данных. Ниже приведен код, который я использую, чтобы попытаться подключиться к базе данных. Порт 3306, и у меня есть база данных, настроенная на машине здесь, в моем доме в сети. Для IP-адреса я просто использую свой внешний IP-адрес в мире. Имя пользователя и пароль были заменены для моей защиты. В моем /etc/mysql/my.cnf "bind_address" закомментирован.

Я перепробовал несколько вещей и не могу заставить это работать. Я впервые использую JDBC ... спасибо за любую помощь! Дайте мне знать, если вам нужна дополнительная информация.

        Class.forName("com.mysql.jdbc.Driver").newInstance();
        System.out.println("before connection");
        connect = DriverManager.getConnection("jdbc:mysql://ip-address/mjla_db", "username", "password");
        System.out.println("connection established");

Вот ошибка, которую я продолжаю получать:

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(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:411)
    at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1116)
    at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:344)
    at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2332)
    at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2369)
    at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2153)
    at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:792)
    at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47)
    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:411)
    at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:381)
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:305)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at school.cs321.mjla.MJLA.main(MJLA.java:30)
Caused by: java.net.ConnectException: Connection refused: connect
    at java.net.PlainSocketImpl.socketConnect(Native Method)
    at java.net.PlainSocketImpl.doConnect(Unknown Source)
    at java.net.PlainSocketImpl.connectToAddress(Unknown Source)
    at java.net.PlainSocketImpl.connect(Unknown Source)
    at java.net.SocksSocketImpl.connect(Unknown Source)
    at java.net.Socket.connect(Unknown Source)
    at java.net.Socket.connect(Unknown Source)
    at java.net.Socket.<init>(Unknown Source)
    at java.net.Socket.<init>(Unknown Source)
    at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:257)
    at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:294)
    ... 15 more

Вторая ошибка После смены ip-адреса на внутренний ip-адрес сервера.

java.sql.SQLException: null,  message from server: "Host '192.168.1.102' is not allowed to connect to this MySQL server"
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1073)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:987)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:982)
    at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1128)
    at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2336)
    at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2369)
    at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2153)
    at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:792)
    at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47)
    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:411)
    at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:381)
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:305)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at school.cs321.mjla.MJLA.main(MJLA.java:30)

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

Я использую подстановочный знак «%» для хоста имени пользователя, которое я использую для аутентификации приложения в базе данных.

Ответы [ 3 ]

2 голосов
/ 15 октября 2011

@ Дэйв Ньютон: Я предполагал, что на моем брандмауэре все еще открыт порт для mysql, потому что я только что работал над проектом, в котором я делал то же самое. Тем не менее, я должен был закрыть его пару месяцев назад. Я проверил несколько минут назад, и он был отключен. Итак, я включил, и теперь он работает нормально. Не уверен, почему он был закрыт ...

1 голос
/ 11 октября 2011

Вы уверены, что IP-адрес в getConnection правильный?Можете ли вы попробовать с

telnet youserver 3306

, чтобы увидеть, есть ли проблема с подключением?Есть ли на сервере брандмауэр?

0 голосов
/ 11 апреля 2017
        Class.forName("com.mysql.jdbc.Driver");
        Connection conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/student", "root", "root");

просто попробуйте

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