MySQL zugriff mit dritt-software
-
hmm sind es reine DB-Hoster, bei dennen du dies testest oder sind Webhoster mit MySql-Datenbank? Bei Webhostern ist die MySql-Datenbank zu 99% nicht von ausen erreichbar.
Eine Möglichkeit gibt es meist noch, wenn du SSH zugriff hast, dann kannst du den Port von deinem Rechner an den Server Tunneln und das geht dann.
Ich hab nur von diesem hier gehört: http://www.ntchosting.com/mysql-hosting.html da ich selber einen VServer besitze und da meine Datenbank einstellen kann wie ich sie möchte.
Mfg marco
-
Danke für deine antwort mark-o
ich habe bplaced byto und einige mehr ausprobiert.
wie meinst du das tunneln ?
ich bin rellativ neu im gebiet von datenbank verbindungen
mfg
-
tunneln hat nichts mit Datenbank zu tun. Ein Tunnel ist eine einfach eine Verbindung, durch die andere Protkolle geleitet werden. Im Beispiel von SSH, wird die Verbindung zu Server über eine SSH-Shell aufgebaut und dem Programm mitgegeben, das der Traffic von Port 3306 (Müsste der von MySql sein) durch die SSH-Verbindung an den Server an Port 3306 geschickt wird. Dadurch sieht es für den Server aus, als würdest deine Software auf dem Server direkt laufen und per localhost verbinden => daher keine Probleme mehr mit den Einschränken. Der 2te Vorteil bei SSH ist noch, das deine ganze Information durch die SSH verschlüsselt werden.
Mfg marco
-
und wie verbinde ich über einen ssh tunnel zu dem server ?
-
Zuerst eine SSH-Verbindung aufbauen, der sagen, das dein Lokaler Port durchgetunnelt wird an den Server, und dann sagst du deiner Anwendung, sie soll sich auf localhost verbinden.
Und wie schon erklärt, wird dann der port 1:1 durch den SSH-Tunnel an den Server weitergereicht.MfG Marco
-
und wie baue ich eine verbindung zum ssh auf ?
könntest du mir es bitte erklären :)?
danke
mfg
-
achso ich dachte das war klar
Zu aller erst benötigst du überhaupt mal ssh-Zugriff auf den Datenbank-Server ansonst kannst du es gleich vergessen.
Danach benötigst du mal einen SSH-Client, unter Linux/Unix und Mac OS X gibt es ihn direkt bei. Unter Windows solltest du die die freie Software PuTTy besorgen.
Da ich leider für solche Projekte bis jetzt immer unter Windows gearbeitet habe, kann ich dir nur die Einstellungen dort sagen.
Putty Starten, Links unter Connection->SSH->Tunnels definierst du Source Port= 3306, Destination Port=127.0.0.1:3306 und fügst ihn per Add hinzu. Danach auf Session und gibst deinen Servernamen ein und drückst Open. Dann fragt er dich noch nach Benutzername und Passwort und nach richtiger Eingabe hast du eine Verbindung offen und kannst nun an den mysql-Server connecten.Mfg Marco
-
hmm ja das könnte funktionieren .. doch will ich es per c# programmieren und sozusagen ein kleineres "Spiel" zu lernzwecken mit meinen freunden entwickeln
-
ssh user@host -L3306:localhost:3306
-
Gutes Thema, da hatte ich auch erst letztens ein Problem damit, vielleicht hilft dir das künfitg.
Ausgangslage war eine MySQL-Datenbank, auf die von unseren Server aus nicht zugegriffen werden konnte. Sämtliche Anfragen auf die Datenbank des Kunden wurden verworfen, ich bekam keinen Zugriff. Eine explizite Freigabe nur für unsere Server wollten die Pfeifen von Hoster nicht machen ("Aus Prinzip - tut uns sehr Leid"), aber einen SSH-Tunnel konnte ich komischerweise einrichten. Beziehungsweise, denn in der Firma testen wir erst alles, bevor wir produktiv gehen, also greife ich auf den Server per SSH zu und versuche dann, auf die Datenbank des Servers 127.0.0.1:3306 zu verbinden. Es erscheint die Meldung, dass auf den Server nicht verbunden werden kann.
Nun gut, root-Zugriff habe ich nicht, also kann ich auch schlecht nachschauen, welche Server alles in der hosts-Tabelle eingerichtet sind. In solchen Momenten hilft stupides Ausprobieren - 127.0.0.1:3305, 127.0.0.1:3304. 127.0.0.1:3307, 127.0.0.1:3308, wurde aber alles abgelehnt. Dann die IP geändert, 127.0.0.2:3306, 127.0.0.3:3306 ... connect? Juhu, geschafft.
Der Rest war ein Kinderspiel (auf Debian) - zur Erklärung:
-f setzt den Dienst in den Hintergrund.
-N führt kein fremdes Kommando aus. So stellst du sicher, dass die über den Tunnel nicht auf deinen Server zugreifen können.
-L geht dem Eingangsport, dem Server, auf den vom Tunnelausgang zugegriffen werden soll, und dem Ausgangsport (alle mit ':' getrennt) voraus.
-<externer Server> gibt die IP oder die Domain an, auf die Verbunden werden soll.ssh -f -N -l Marc++us -L 3307:127.0.0.3:3306 c-plusplus.net
Dieser Befehl bedeutet:
Du gehst eine Verbindung mit c-plusplus.net ein
Diese wird nach Verifizierung in den Hintergrund verlegt.
Als Login-Name gibst du Marc++us an (Password gibst du an, sobald du den Befehl ausgeführt hast).
Um auf c-plusplus.net zuzugreifen, sendest du deine Anfragen an DEINEN Port 3307, der diese forwarded, und zwar nach c-plusplus.net. Dort werden die Daten dann an die IP 127.0.0.3 Port 3306 gesendet - MySQL-Verbindung hergestellt.Bitte so nicht nachmachen.
-
zum "spielen", also zum üben mit c++ und DB's ist dein Konzept tragbar, für ernste Projecte wird kaum einer SQL uebers Inet schicken, weil zu unperformant / zu viel Overhaed.
Weswegen Datenbankserver über Inet eher selten verwendet werden. Also meist ist soweiso ne Zwischenschicht (die ne Eigene Logik hat, und damit den Verkehr komprimiert und cacht) da dran. Weswegen man auch seltener SQL Angebote fuers Web findet.
Besser: nen eigenes Protokoll entwerfen, und die DB's als reine Backends laufen lassen. nen Mysqlserver(RDBMS) mit nur einem Prozess als zugriff macht dann auch wenigers sinn, da waer ne reine File Lösung besser (wenns unbedingt sql sein muss: sqlite, wenn eigenes Protokoll geht, dann ne memory DB ala memcached oder berkley db oder sowas ... )
Und noch nen Tipp zu nem Fallstrick:
gibst du wegns eines tunnels "localhost" an, reagiert der client (er scannt auf die zeichenfolge) etwas ungewoehnlich. Er meint dass der server aufn Localhost auch im pipe modus lauft, und verucht sich dann ueber ne pipe zu verbinden, was ja bei nem tunnel nicht hasst -> geht nicht.immer 127.0.0.1 als server angeben um das zu umgehen ...
Ciao ...