Welche Datenbank passt zu mir?

pege88

Benutzer
Beiträge
7
Hallo liebe Freunde,

ich bin neu hier im Forum und hoffe auf rege Hilfe :)
Im Moment spiele ich an einer kleinen App-Idee und da die User eigene Profile
anlegen können, brauche ich eine Datenbank auf die ich von überall zugreifen kann.
Kurz zu meinen Kenntnissen:
- Ich programmiere seit ein paar Jahren mit Java und weiß wie ich die Connection zur Datenbank erstelle
- Ich kenne mich mit den Grundlagen von SQL aus und nutze MySQL über localhost auf meinem Laptop

Ich habe schon versucht über Google Hilfe zu bekommen. Zum Testen würde es mir ausreichen, dass ich auf meinen MySQL Server aus dem Heimnetzwerk zugreifen könnte. Dabei bekam ich aber schnell Probleme mit der my.cnf.
Für später wäre es aber wichtig, dass ich auf die Datenbank von überall aus zugreifen kann.
Welche Datenbank empfiehlt Ihr und könnt Ihr mir einige Tipps geben?

Danke für Eure Hilfe!
 
Werbung:
Ich habe schon versucht über Google Hilfe zu bekommen. Zum Testen würde es mir ausreichen, dass ich auf meinen MySQL Server aus dem Heimnetzwerk zugreifen könnte. Dabei bekam ich aber schnell Probleme mit der my.cnf.
Für später wäre es aber wichtig, dass ich auf die Datenbank von überall aus zugreifen kann.
Welche Datenbank empfiehlt Ihr und könnt Ihr mir einige Tipps geben?

Danke für Eure Hilfe!

So lange Du Deine Probleme nicht in klare Worte fassen kannst (Hint: die Fehlermeldung) wird es schwer bis unmöglich Dir zu helfen.

Wenn Du von überall her auf die DB zugreifen willst dann brauchst einen Hoster, der Dir 24*7 anbietet. Du darfst Dich gern an mich wenden.
 
Danke für die schnelle Antwort.
Im Grunde genommen geht es im Moment nicht um eine genaue Fehlermeldung, sondern um die generelle Frage welche DB ich später am besten nutze.
Und was das angeht, bin ich auch schon auf diversen Seiten gewesen, die natürlich gegen Kosten eine DB anbieten, die auf ich auch jederzeit zugreifen kann.

Da wir aktuell aber noch in der Probephase sind, genügt es uns auf eine lokale Datenbank aus dem eigenen Heimnetzwerk zuzugreifen.
Das habe ich mal mit MySQL versucht, habe eine DB über localhost angelegt und auch in einem JAVA Programm getestet, dass generell der Zugriff auf die DB funktioniert. Das geht also.
Jetzt wollte ich die DB in meiner App folgendermaßen einbinden:
Code:
String connString = "jdbc:jtds:sqlserver://MY_SERVER_NAME:24923/Phone_Test;user=testLogin;password=xxxxxxxx;instance=MYINSTANCE";
        con = DriverManager.getConnection(connString,"testLogin","xxxxxxxx");

Als Fehler kam dann:
Connection error: Unable to get information from SQL Server: localhost.

Laut Google liegt das ja daran, dass meine DB nicht im Netzwerk freigegeben ist. Ich habe jetzt mal beim user die Hostrechte auf "%" gesetzt, sodass eigentlich jeder mit dem richtigen Passwort auf die DB zugreifen können sollte. Danach kam jedoch derselbe Fehler. Ich habe dann mehrere Seiten (z.B. http://www.gtkdb.de/index_7_2145.html) gefunden in denen einige Erklärungen standen, womit ich aber leider nicht klar kam.

Jetzt stell ich mir und Euch die Frage: Soll ich den Aufwand betreiben und die MySQL Datenbank im Netzwerk freigeben oder gibt das Alternativen über die es einfacher ist diesen Netzwerkzugriff zu realisieren?

Viele Grüße
 
Da wir aktuell aber noch in der Probephase sind, genügt es uns auf eine lokale Datenbank aus dem eigenen Heimnetzwerk zuzugreifen.
Das habe ich mal mit MySQL versucht, habe eine DB über localhost angelegt und auch in einem JAVA Programm getestet, dass generell der Zugriff auf die DB funktioniert. Das geht also.
Jetzt wollte ich die DB in meiner App folgendermaßen einbinden:
Code:
String connString = "jdbc:jtds:sqlserver://MY_SERVER_NAME:24923/Phone_Test;user=testLogin;password=xxxxxxxx;instance=MYINSTANCE";
        con = DriverManager.getConnection(connString,"testLogin","xxxxxxxx");
Ich bin mir jetzt nicht ganz sicher, aber ich denke mal, der Connection-String ist schon mal insgesamt falsch. Bist Du sicher, daß die DB auf dem von Dir genannten Port lauscht? Die doppelte Angabe der Userdaten (Name und Passwort) ist sehr wahrscheinlich nicht nur redundant, sondern auch falsch.

Als Fehler kam dann:
Connection error: Unable to get information from SQL Server: localhost.

Offenbar hast Du ein Nameserverproblem, wenn MY_SERVER_NAME auf 'localhost' auflöst, und Du aber von einem Client im Netz kommst.

Andreas
 
Ich bin mir jetzt nicht ganz sicher, aber ich denke mal, der Connection-String ist schon mal insgesamt falsch. Bist Du sicher, daß die DB auf dem von Dir genannten Port lauscht? Die doppelte Angabe der Userdaten (Name und Passwort) ist sehr wahrscheinlich nicht nur redundant, sondern auch falsch.

Die Vorlage, wie ich den Connectionstring für den jtds Treiber aufbaue, habe ich so aus dem Internet. Ich habe auch mit verschiedenen Varianten gespielt, also username und password aus dem String weglassen, oder auch beides drin lassen und dafür in .getConnection nur den String mit übergeben.
Beides hat jedoch zum gleichen Problem geführt. Genügt es, dass ich in der MySQL Workbench für den entsprechenden user die Rechte auf "%" setze, damit ich dann aus dem Netzwerk auf die DB zugreifen kann? Ich habe auch MySQL neu installiert und am Anfang angeklickt, dass ich eigentlich über das Netzwerk Zugriffe zulasse.


offenbar hast Du ein Nameserverproblem, wenn MY_SERVER_NAME auf 'localhost' auflöst, und Du aber von einem Client im Netz kommst.

Damit kenne ich mich nicht aus. Was für ein Problem ist das genau und wie kann ich es beheben. Ich löse MY_SERVER_NAME zu 'localhost' auf und gebe anschließend meinen Port an.
 
Damit kenne ich mich nicht aus. Was für ein Problem ist das genau und wie kann ich es beheben. Ich löse MY_SERVER_NAME zu 'localhost' auf und gebe anschließend meinen Port an.

'localhost' ist IMMER der lokale Rechner. Der Name 'localhost' ist kein Zufall, sondern Programm. Wenn Deine Datenbank auf Rechner A läuft und Du auf Rechner B bist und versuchst, dich mit einer Datenbank auf 'localhost' zu verbinden, wo, denkst Du, landest Du?

Was für einen Port gibst Du da an? Ist der via Zufallsgenerator ermittelt, oder wie kommst Du auf 24923?
 
'localhost' ist IMMER der lokale Rechner. Der Name 'localhost' ist kein Zufall, sondern Programm. Wenn Deine Datenbank auf Rechner A läuft und Du auf Rechner B bist und versuchst, dich mit einer Datenbank auf 'localhost' zu verbinden, wo, denkst Du, landest Du

Am Ende wohl auf Rechner B...Ich habe deshalb jetzt eine neue Connection erstellt und dort statt 'localhost' eine vorgegebene IP Adresse verwendet, was wie ich denke, aber am Ende wohl dasselbe ist!? Wie könnte ich das lösen?

Was für einen Port gibst Du da an? Ist der via Zufallsgenerator ermittelt, oder wie kommst Du auf 24923?

24923 war in dem Beispiel vorgegeben. Ich verwende den Port 3306 und generell funktioniert die Verbindung auch wenn ich von demselben Rechner aus ein Programm laufen lasse, das auf die DB zugreifen will.
 
Nein, aber wie wäre es mit der IP von A? Zu einfach, darauf zu kommen?

:) zu offensichtlich. Aber daran lag es scheinbar auch nicht. Es kommt immer derselbe Fehler, auch wenn ich jetzt die neue Connection habe und im String auch die IP Adresse und den richtigen Port eingebe. Wenn ich mit den Werten im String herumspiele, ändert sich an der Fehlermeldung nur etwas wenn ich die instance weglasse und dann kommt nur "Connection error: null".
Ich weiß, dass es schwer ist von außen hierbei zu helfen, weil einfach zu viele Dinge für Dich nicht offen liegen, aber danke schon mal für die Hilfe bisher. Ich vermute, dass es entweder daran liegt, dass ich nicht aus dem Netzwerk heraus auf die DB zugreifen kann, oder dass an dem String und/oder der Erstellung der Connection etwas nicht stimmt.
 
:) zu offensichtlich. Aber daran lag es scheinbar auch nicht. Es kommt immer derselbe Fehler, auch wenn ich jetzt die neue Connection habe und im String auch die IP Adresse und den richtigen Port eingebe. Wenn ich mit den Werten im String herumspiele, ändert sich an der Fehlermeldung nur etwas wenn ich die instance weglasse und dann kommt nur "Connection error: null".
Ich weiß, dass es schwer ist von außen hierbei zu helfen, weil einfach zu viele Dinge für Dich nicht offen liegen, aber danke schon mal für die Hilfe bisher. Ich vermute, dass es entweder daran liegt, dass ich nicht aus dem Netzwerk heraus auf die DB zugreifen kann, oder dass an dem String und/oder der Erstellung der Connection etwas nicht stimmt.

Tja, schwer zu sagen. Sind irgend welche Tischbrandschutzmauern im Wege? Was sagt netstat auf dem Server, was ein 'telnet server 3306' vom Client aus?
 
Werbung:
Tja, schwer zu sagen. Sind irgend welche Tischbrandschutzmauern im Wege? Was sagt netstat auf dem Server, was ein 'telnet server 3306' vom Client aus?

Nein die Verbindung ist durch nichts gestört :)
netstat gibt an dass die Verbindung über die IP und den Port hergestellt ist. Leider kann ich vom Client (also vom Handy aus) nicht wirklich viel in Erfahrung bringen. Ich werde später mal von einem anderen Rechner im Netzwerk ein Testprogramm laufen lassen, um zu sehen ob der Zugriff generell möglich ist und es vielleicht nur daran liegt, dass ich vom Handy aus zugreifen will. Achso, aber vom Handy aus bin ich über WLAN natürlich im Netzwerk drin!
 
Zurück
Oben