MySQL Remote Verbindung zu MariaDB

C

coldstone

Bekanntes Mitglied
Hallo zusammen,

ich habe folgendes problem, wo ich nicht weiterkomme. Vielleicht kann mir der ein oder andere einen Tip geben.

Ich möchte über JavaFX die Verbindung zu MariaDB testen.

MariaDB (10.1.47) ist auf ein Ubuntu-Server (18.04) installiert.

Über die Server-Konsole kann ich mich auf MariaDB einloggen und Tabellen erstellen oder löschen.
Nur klappt es irgendwie nicht über den Java-Client.
Ziel ist es später Benutzer auf den Client anzulegen und Client seitig Daten abzufragen.


Ich habe in der MariaDB config datei 850-server.cnf, die bind-adress auf 0.0.0.0 gesetzt. Dies ist glaube ich erforderlich, damit alle anfragen von aussen erlaubt sind.
Hatte ich in einem Tutorial gelesen. Falls ich falsch liege korrigiert mich bitte.

Die mariadb-java-client-2.7.2.jar datei habe ich als Path in Eclipse angegeben.

Mein Java-Cose sieht wie folgt aus:

Java:
package application;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;


public class DBConnection {
   
    public static void main(String[] args) {
   
    Connection connection = null;
    String url = "jdbc:mariadb://***.***.***.***:3306/player";
    String user = "root";
    String pwd = "*******,";
           
           
    try {
        connection = DriverManager.getConnection(url, user, pwd);
    } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    System.out.println("Erfolgreiche Verbindung zur Datenbank");
    }
}

Es wird leider eine Exception in der Konsole von Eclipse ausgegeben.

Java:
java.sql.SQLNonTransientConnectionException: Could not connect to address=(host=***.***.***.***)(port=3306)(type=master) : Socket fail to connect to host:***.***.***.***, port:3306. Connection timed out: no further information
    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:1392)
    at org.mariadb.jdbc.internal.util.Utils.retrieveProxy(Utils.java:635)
    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 application.DBConnection.main(DBConnection.java:20)

Eine Datenbank namens player ist angelegt.
Was mich unsicher macht ist der String url:

Code:
jdbc:mariadb://***.***.***.***:3306/player

Hier wird doch die IP-Adresse meines Ubuntu Servers eingetragen, gefolgt vom PORT meines MariaDB Datenbanks, Richtig?
 
Oneixee5

Oneixee5

Bekanntes Mitglied
Du kannst von deinem Client aus testen, ob die DB überhaupt erreichbar ist:
Bash:
telnet <ip> 3306
Du kannst dich auf diese Weise nicht verbinden aber du müsstes eine Meldung von der DB sehen, mit <version>MariaDB<wilde zeichen>passwordConnection closed by foreign host.
Sollte das nicht funktionieren, gibt es möglicherweise ein Problem mit IP, der Firewall o.ä.
 
kneitzel

kneitzel

Top Contributor
Ich würde vermuten, dass eine Firewall aktiv ist. Das kannst Du aber testen wenn Du das machst, was Oneixee5 vorgeschlagen hat.

Generell ist es aber auch keine gute Idee, eine Datenbank von außen zugänglich zu haben. Da ist der übliche Aufbau, dass man dies über einen Webservice oder so laufen lässt.
 
C

coldstone

Bekanntes Mitglied
Du kannst von deinem Client aus testen, ob die DB überhaupt erreichbar ist:
Bash:
telnet <ip> 3306
Du kannst dich auf diese Weise nicht verbinden aber du müsstes eine Meldung von der DB sehen, mit <version>MariaDB<wilde zeichen>passwordConnection closed by foreign host.
Sollte das nicht funktionieren, gibt es möglicherweise ein Problem mit IP, der Firewall o.ä.
Danke für den Telnet Tip.
Über Telnet konnte ich eine Verbindung aufbauen. Aber mit dem richtigen Link zum Server. Hatte unter JavaFX die Ip-Adresse angegeben, was auch über das Telnet nicht funktioniert hat.

Ich bekomme folgende Exception jetzt ausgegeben:

Java:
java.sql.SQLInvalidAuthorizationSpecException: Could not connect to address=(host=**************.de)(port=3306)(type=master) : (conn=*******) Access denied for user 'root'@'*******.dynamic.kabel-deutschland.de' (using password: YES)
Current charset is windows-1252. If password has been set using other charset, consider using option 'passwordCharacterEncoding'

Liegt das Problem darin, das ich mich als 'root' versuche zu verbinden?

@kneitzel
Generell soll auch nur von aussen ein neuer "Player" in die Datenbank eingefügt werden. Ist dies auf diesem wege nicht möglich?
 
J

Joreyk

Bekanntes Mitglied
Generell soll auch nur von aussen ein neuer "Player" in die Datenbank eingefügt werden. Ist dies auf diesem wege nicht möglich?
dein Spieler muss sich sowieso mit deinem Server verbinden und der stellt dann die Anfrage "trag mich ein" und nur dein Server kennt den sql Server und weis was er eintragen muss ansonsten könnte jeder von aussen an deiner Datenbank rum wurschteln
 
L

LimDul

Top Contributor
Danke für den Telnet Tip.
Über Telnet konnte ich eine Verbindung aufbauen. Aber mit dem richtigen Link zum Server. Hatte unter JavaFX die Ip-Adresse angegeben, was auch über das Telnet nicht funktioniert hat.

Ich bekomme folgende Exception jetzt ausgegeben:

Java:
java.sql.SQLInvalidAuthorizationSpecException: Could not connect to address=(host=**************.de)(port=3306)(type=master) : (conn=*******) Access denied for user 'root'@'*******.dynamic.kabel-deutschland.de' (using password: YES)
Current charset is windows-1252. If password has been set using other charset, consider using option 'passwordCharacterEncoding'

Liegt das Problem darin, das ich mich als 'root' versuche zu verbinden?
Man muss bei mysql auch angeben, von wo sich welcher User verbinden dürfen. Siehe z.B. hier: https://www.fosit.de/benutzerverwaltung-mysql

root wird sich standardmäßig nur von localhost aus einloggen dürfen.
@kneitzel
Generell soll auch nur von aussen ein neuer "Player" in die Datenbank eingefügt werden. Ist dies auf diesem wege nicht möglich?
Nein. Der Benutzer kann dann auf der Datenbank alles tun, wozu er rechte hat. Mit dem root Account die komplette Datenbank auslesen und löschen. Sprich, wer dein javafx programm hat, hat Vollzugriff auf die Datenbank.
 
kneitzel

kneitzel

Top Contributor
Also generell sollte man die Angriffsmöglichkeiten immer so sehr beschränken, wie es nur irgendwie geht. Gerade bei einer Datenbank hat ein Angreifer aber schnell einiges an Möglichkeiten. Über das Abgreifen von Daten bis hin zur Kompromittierung des ganzen Servers sind da Tür und Tor geöffnet.

Eine Datenbank bietet einem Benutzer nun einmal standardmäßig sehr viele Möglichkeiten. Da will man so wenig Risiken eingehen, wie nur irgendwie möglich.
 
C

coldstone

Bekanntes Mitglied
Ok, vielen dank für die Antworten.
Aber generell gesehen kann ich mich auch als root über den server einloggen, wenn die Konfiguration von MariaDB es hergibt, sehe ich das Richtig?
Unabhängig davon ob diese variante sicher ist oder nicht?
Ich verstehe die Exception jetzt so, dass die Anfrage beim Server ankommt, aber ich keine Berechtigung habe.
 
kneitzel

kneitzel

Top Contributor
Ja, wobei das an mehreren Dingen liegen kann:
- falsches Passwort (ggf. durch falsches Encoding - dazu hat Du ja auch eine Meldung bekommen)
- User prüfen - hast Du ein root@% user? Oder nur den root@locahost?
 
C

coldstone

Bekanntes Mitglied
Passwort ist eigentlich richtig. Encoding müsste ich mal gucken.
User habe ich nur den root, welches standardmäßig ja vorhanden ist. Habe nur das Password geändert.
 
L

LimDul

Top Contributor
Schau mal in die Mysql-User Verwaltung, wie der root da angegeben ist. Ob wie @kneitzel schrieb als root@% oder als root@localhost
 
kneitzel

kneitzel

Top Contributor
Einfach mal verbinden zur mysql Datenbank (Also mit sowas wie mysql -u root -p) und da dann ein
SELECT user, host from mysql.user;
Dann siehst Du ja, was da an Usern gelistet wird.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
K MySQL Zugriff auf Remote-DB verweigert Datenbankprogrammierung 6
P MySQL Remote Zugriff Datenbankprogrammierung 2
A Zugriff auf Remote MySQL-DB mit JAR-File Datenbankprogrammierung 7
G mysql remote connect Datenbankprogrammierung 3
Mart SQL , CSV Verbindung : Zu Umfangreicher Code durch Unwissenheit Datenbankprogrammierung 21
P Verbindung zu einer Access Datenbank per Eclipse oder Intellij Datenbankprogrammierung 0
Z Beim schließen des Programms die verbindung zur DB beenden. Datenbankprogrammierung 4
Husamoli345 JSF-JDBC Verbindung Crud Datenbankprogrammierung 15
V keine Verbindung möglich (Access-DB) Datenbankprogrammierung 3
H MySQL Verbindung Datenbank und Eclipse (Java) Datenbankprogrammierung 5
M Oracle SQLException: Verbindung getrennt Datenbankprogrammierung 2
S Verbindung von einer Excel Datei zu Java Datenbankprogrammierung 2
C Verbindung mit SQLExpress Datenbankprogrammierung 9
S E(fx)clipse Verbindung zu MS SQL Express aufbauen Datenbankprogrammierung 7
M H2 Verbindung zur Datenbank komplett schließen Datenbankprogrammierung 11
F MySQL Verbindung zum SQL-Server Datenbankprogrammierung 27
H MySQL MySQL - Keine Verbindung zur Datenbank?! Datenbankprogrammierung 4
K MySQL Problem mit MySQL verbindung Datenbankprogrammierung 8
Thallius MySQL jdbc schließt Verbindung nach vielen Request von selber Datenbankprogrammierung 8
C datenbank verbindung config Datenbankprogrammierung 23
I MariaDB-Verbindung in JAVA Datenbankprogrammierung 11
J Verbindung aufbauen Datenbankprogrammierung 7
S DB2 Express C - keine Verbindung zur Datenbank Datenbankprogrammierung 2
I Es kann keine Verbindung zum Server aufgebaut werden Datenbankprogrammierung 12
Thallius MySQL Merkwürdiges JDBC Verhalten bei VPN Verbindung. Datenbankprogrammierung 7
P MySQL-Verbindung in anderer Klasse nutzen Datenbankprogrammierung 2
W Keine ODBC-Verbindung zur MSAccess-Datenbank Datenbankprogrammierung 2
S Auslagern der Datenbank Verbindung Datenbankprogrammierung 2
M Verbindung von Java Programm zur Acccess Datenbank (mdb-Datei) Datenbankprogrammierung 0
D NullPointerException bei DB Verbindung Datenbankprogrammierung 6
AssELAss Verbindung i5 Series 7.1 / 7.2 (DB2) mit Oracle SQL Developer Datenbankprogrammierung 3
J Verbindung zu Derby Datenbank funktioniert nicht Datenbankprogrammierung 14
M MySQL Verbindung zum Server aufbauen ohne DB ansprechen Datenbankprogrammierung 2
D Java MS Access Verbindung Datenbankprogrammierung 10
X MySQL DB-verbindung ohne JDBC/ODBC Datenbankprogrammierung 1
J Keine Verbindung zu MSSQL DB mit JDBC Datenbankprogrammierung 3
A Verbindung mit Access 2007 Datenbank herstellen Datenbankprogrammierung 1
I Datenbank Verbindung geht nicht Datenbankprogrammierung 2
N MySQL com.microsoft.sqlserver.jdbc.SQLServerException: Die Verbindung wurde geschlossen. Datenbankprogrammierung 1
1 MySQL Verbindung mit localhost als IP funktioniert, aber mit normaler IP nicht Datenbankprogrammierung 2
A Nach Export mysql Verbindung zur Datenbank nicht möglich, was tun? Datenbankprogrammierung 7
Helgon H2 Verbindung öffnen/schließen - Dauer, wann, wie lange? Datenbankprogrammierung 2
J Verbindung zu Access Datenbank Datenbankprogrammierung 15
J Verbindung zu Datenbank herstellen Datenbankprogrammierung 26
P MySQL Verbindung nach außen sehr langsam Datenbankprogrammierung 4
P JDBC Verbindung zur DB klappt nicht Datenbankprogrammierung 6
J Java - JDBC Verbindung zur Datenbank nicht möglich Datenbankprogrammierung 10
T MySQL Sichere Verbindung Datenbankprogrammierung 6
T MySQL Kann Verbindung zur MySQL Datenbank nicht herstellen. Datenbankprogrammierung 4
S Google Web Toolkit LDAP - Verbindung Datenbankprogrammierung 2
pg1337 Verbindung mit postgres - eclipse Datenbankprogrammierung 4
M Verbindung mit MSSQL hängt! Datenbankprogrammierung 2
cover1012 Derby/JavaDB Verbindung mit FTP-Server Datenbankprogrammierung 13
T NullPointerException bei Verbindung zur Datenbank Datenbankprogrammierung 4
J DB2 Verbindung zu AS400 Datenbankprogrammierung 6
F PostgreSQL JPA und Hibernate - Verbindung zur DB Datenbankprogrammierung 7
J MySQL Verbindung über JDBC scheitert immer Datenbankprogrammierung 2
M MySQL getConnection - Verbindung Problem Datenbankprogrammierung 2
T mdb Verbindung ohne Registrierung der Datenquelle im OS Datenbankprogrammierung 14
K MySQL Verbindung funktioniert in Netbeans aber .jar funktioniert nicht Datenbankprogrammierung 5
jeppi MySQL Design-Problem: DB-Verbindung herstellen und halten - JdbcRowSet / Idle-Timeout? Datenbankprogrammierung 9
S Hibernate in Verbindung mit Hsql Datenbankprogrammierung 2
D Oracle Verbindung mit Java zu Datenbank Datenbankprogrammierung 8
F MSSQL-Server Verbindung Datenbankprogrammierung 5
E Hibernate Problem bei bidirektionaler 1:n Verbindung Datenbankprogrammierung 2
DStrohma MS SQL Server 2005 + Java: Immer nur eine aktive Verbindung erlaubt? Datenbankprogrammierung 5
G MySQL Tables 1:1 verbindung Datenbankprogrammierung 14
B JDBC Verbindung mit Postgresql Datenbankprogrammierung 13
U MSSQL Verbindung steht, aber meckert beim Statement Datenbankprogrammierung 2
G JDBC-Verbindung: User wechseln Datenbankprogrammierung 2
F Kann keine Verbindung mit HSQLDB aufbauen Datenbankprogrammierung 2
N Trennt sich die Verbindung zur DB (MySQL) automatisch? Datenbankprogrammierung 3
X JDBC Verbindung in einer Funktion Datenbankprogrammierung 9
O HSQLDB Verbindung schlägt fehl Datenbankprogrammierung 3
C DB2/AS400 Verbindung Datenbankprogrammierung 2
T Form, Verbindung Feld -> DB Datenbankprogrammierung 3
J Verbindung zur Datenbank schlägt fehl... Datenbankprogrammierung 2
C keine Verbindung zur MS-SQL-Datenbank mehr Datenbankprogrammierung 4
Y Keine verbindung mit der Datenbank Datenbankprogrammierung 2
G verbindung 2er Tabellen Datenbankprogrammierung 3
G persistence.xml für MySQL - Verbindung Datenbankprogrammierung 6
C Keine Verbindung Datenbankprogrammierung 12
G 2 Tabellen in einer 1:n Verbindung Datenbankprogrammierung 2
G Verbindung mit Eclipse auf Datenbank einrichten Datenbankprogrammierung 3
M Verbindung zu Oracle DB Datenbankprogrammierung 4
U *.mdb Datenbank Verbindung mit Pfadangabe Datenbankprogrammierung 3
sparrow Objekt mit lazy-verbindung komplettieren Datenbankprogrammierung 13
M jbcd : odbc Verbindung zu Accessdatei (*.mdb) Datenbankprogrammierung 9
S Fehler bei DB Verbindung Access Datenbankprogrammierung 6
M DB-Verbindung zu DB in Projektordner möglich? Datenbankprogrammierung 17
G jdbc grundlegende verbindung zu sql server geht nicht Datenbankprogrammierung 9
M Passwortvergabe bei Verbindung zwischen jdbc und mysqlServer Datenbankprogrammierung 2
M Verbindung überprüfen und bei Bedarf neu aufbauen Datenbankprogrammierung 3
M Fehler bei der Verbindung zu einer MSSQL/Express Datenbank! Datenbankprogrammierung 17
B fehlerhafte PostgreSQL-Verbindung Datenbankprogrammierung 4
C Keine Verbindung zu HSQLDB möglich Datenbankprogrammierung 22
S PostgreSQL Verbindung kommt nicht zu stande Datenbankprogrammierung 3
B MySQL-Verbindung ausschließlich zu localhost möglich Datenbankprogrammierung 7
P Verbindung zu einer Datenbank Datenbankprogrammierung 6
S Gleiche Verbindung funktioniert einmal und einmal nicht Datenbankprogrammierung 4

Ähnliche Java Themen


Oben