Не удается подключиться к MariaDB на Raspberry Pi - PullRequest
0 голосов
/ 28 апреля 2020

Я кодирую небольшой проект в java, в котором я хочу сравнить введенный пароль с сохраненным sql вводом.

Все размещено на моем Raspberry Pi 3:

  • Apache 2.4.37
  • Php 7.4.5
  • MariaDB 10.0
  • phpMyAdmin 5.0.2

p c, на котором я остановился, и малина находятся в одной сети. Я могу легко получить доступ к базе данных с помощью phpMyAdmin, но не в моем Java коде. (raspberrypi / phpmyadmin), (localhost: 3306 возвращает: localhost отказался подключаться)

Вот несколько шагов, которые я сделал:

  • открыл порты
  • изменил bind-адрес с 127.0.0.1 на 0.0.0.0 в настройках mariadb
  • (skip-network даже не было в моей конфигурации) и установил порт на 3306
  • добавил mariadb - java -клиента-2,6 для моей библиотеки в java коде

Основное исключение:

java.sql.SQLNonTransientConnectionException: Could not connect to address=(host=localhost)(port=3306)(type=master) : Socket fail to connect to host:localhost, port:3306. Connection refused: connect

все остальное:

at org.mariadb.jdbc.internal.util.exceptions.ExceptionFactory.createException(ExceptionFactory.java:73)
    at org.mariadb.jdbc.internal.util.exceptions.ExceptionFactory.create(ExceptionFactory.java:192)
    at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.connectWithoutProxy(AbstractConnectProtocol.java:1346)
    at org.mariadb.jdbc.internal.util.Utils.retrieveProxy(Utils.java:634)
    at org.mariadb.jdbc.MariaDbConnection.newConnection(MariaDbConnection.java:150)
    at org.mariadb.jdbc.Driver.connect(Driver.java:89)
    at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:677)
    at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:228)
    at sample.SQL.<init>(SQL.java:16)
    at sample.Login.initialize(Login.java:55)
    at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2573)
    at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2466)
    at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3253)
    at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3210)
    at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3179)
    at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3152)
    at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3129)
    at javafx.fxml/javafx.fxml.FXMLLoader.load(FXMLLoader.java:3122)
    at sample.Main.start(Main.java:16)
    at javafx.graphics/com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$9(LauncherImpl.java:919)
    at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runAndWait$11(PlatformImpl.java:449)
    at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$9(PlatformImpl.java:418)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$10(PlatformImpl.java:417)
    at javafx.graphics/com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:96)
    at javafx.graphics/com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
    at javafx.graphics/com.sun.glass.ui.win.WinApplication.lambda$runLoop$3(WinApplication.java:175)
    at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: java.sql.SQLNonTransientConnectionException: Socket fail to connect to host:localhost, port:3306. Connection refused: connect
    at org.mariadb.jdbc.internal.util.exceptions.ExceptionFactory.createException(ExceptionFactory.java:73)
    at org.mariadb.jdbc.internal.util.exceptions.ExceptionFactory.create(ExceptionFactory.java:183)
    at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.createSocket(AbstractConnectProtocol.java:255)
    at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.createConnection(AbstractConnectProtocol.java:512)
    at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.connectWithoutProxy(AbstractConnectProtocol.java:1341)
    ... 25 more
Caused by: java.net.ConnectException: Connection refused: connect
    at java.base/java.net.PlainSocketImpl.waitForConnect(Native Method)
    at java.base/java.net.PlainSocketImpl.socketConnect(PlainSocketImpl.java:107)
    at java.base/java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:399)
    at java.base/java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:242)
    at java.base/java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:224)
    at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:403)
    at java.base/java.net.Socket.connect(Socket.java:609)
    at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.createSocket(AbstractConnectProtocol.java:250)
    ... 27 more

Отказ в соединении звучит как проблема с портом или разрешением, но я буквально попробовал все в последних заданных здесь вопросах об этой топике c.

Заранее спасибо за чтение и любую помощь:)

Ответы [ 2 ]

0 голосов
/ 29 апреля 2020

Чувствую себя так глупо прямо сейчас.

Когда-то у меня был подключен другой RaspberryPi, поэтому я все время открывал порт на неправильных устройствах и даже копировал неправильный ip.

После изменения мне нужно было только исправить проблему с правами:

 GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '' WITH GRANT OPTION;
0 голосов
/ 29 апреля 2020

можно попробовать из оболочки

telnet <pi_IP> 3306

Это покажет, если порт вообще открыт. Это покажет, если ваши настройки сервера mariaDB хотя бы открывают порт и сервер работает. Там все еще может быть запущен брандмауэр (например, iptables или firewalld), который не позволит достичь порта

...