MySQL Connection Problem

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MariaDB/MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
Astraioz

Hallo erstmal,
zufälligerweise hat ein Kollege noch eine MySQL Datenbank die er nicht braucht und freundlicherweise konnte ich mir diese borgen.
Nun habe ich versucht MySQL DBs mit Python zu steuern.
Das ganze sieht dann so aus:

Code: Alles auswählen

import MySQLdb

mysql_opts = { 
    'host': "db*********.db.1and1.com", 
    'user': "dbo*********", 
    'pass': "********", 
    'db':   "db********" 
    } 
mysql = MySQLdb.connect(mysql_opts['host'], mysql_opts['user'], mysql_opts['pass'], mysql_opts['db'])
Leider bekomme ich ein Error, dass er die Datenbank nicht finden kann, aber die MySQL Datenbank ist auf Version 5.0 was MySQLdb auch unterstützt und die Datenbank ist komplett fertig eingerichtet.

Code: Alles auswählen

OperationalError: (2005, "Unknown MySQL server host 'db*********.db.1and1.com' (0)")
Weiß jemand wo das Problem liegt?

Gruß
Astraioz
BlackJack

@Astraioz: Ist der Server denn tatsächlich von dem Rechner wo Dein Programm läuft unter dem Namen erreichbar? Kannst Du ``db*********.db.1and1.com`` von dort aus anpingen? Hoster stellen Datenbanken oft nur innerhalb ihres eigenen Netzes zur Verfügung, damit da nicht jeder von aussen zu- oder angreifen kann.
Astraioz

@blackjack:
Danke für die Antwort aber wie pinge ich denn ein Server an. Kenn mich da noch nicht so aus^^
LG
Astraioz

Mhh. Wenn ich versuche den Server anzupingen sagt er mir konnte ... nicht finden.
Aber wie lös ich das denn nur. Trotzdem danke für die Antworten.
Sirius3
User
Beiträge: 17826
Registriert: Sonntag 21. Oktober 2012, 17:20

@Astraioz: Wie Blackjack schon geschrieben hat, kannst Du von außen gar nicht auf die Datenbank zugreifen.
Was willst Du überhaupt machen?
Zum Programmieren würde ich Dir sowieso empfehlen, eine MySQL-Dateinbank auf Deinem lokalen Rechner zu installieren.
lunar

@Astraioz Du sagst, ein Kollege hätte Dir diese Datenbank zur Verfügung gestellt. Frage Ihn einmal, wie er sich den Zugriff auf diese Datenbank vorgestellt hat, und ob er wirklich gelaubt hat, diese Datenbank wäre außerhalb des Providernetzwerks zugänglich.
Astraioz

Er hat diese überhaupt nicht benutzt oder gebraucht.
Es macht ja keinen Sinn diese auf meinem Rechner zu speichern wenn ich diese von überall benutzen möchte.
Benutzeravatar
daemonTutorials
User
Beiträge: 171
Registriert: Sonntag 6. Februar 2011, 12:06
Kontaktdaten:

Ja, was da fehlt ist eine Schnittstelle. Auch bekannt als Web-API. Zwischen Datenbankserver und deinem Py-Programm.

Da der Webserver wahrscheinlich nur PHP unterstützt, musst du wohl oder übel in PHP so eine Schnittstelle bauen und die SQL-Anweisungen an das Skript senden und die Ausgabe zurück senden, sodass du sie geschickt verarbeiten kannst. Du kannst zum verringern des Sicherheitsrisikos die Zugangsdaten per POST mitschicken, um somit vor Missbrauch zu schützen. Klug wäre es noch, die zu verschlüsseln und bei PHP dann erstmal gegenzuchecken und dann zu entschlüsseln und auf MySQL DB verbinden.

Dadurch werden natürlich die SQL-Anweisungen ungeprüft geschickt, und wer sich damit auskennt, kann an das Skript ganz einfach ein POST-Paket senden und SQL Injection machen. Also: persönlichen Schlüssel mitschicken, den nur du hast und als SHA256-HASH oder ähnliches in der PHP-Datei vorliegt. Jetzt kann erstmal nur ein Man-in-the-Middle darauf zugreifen.

Mit quasi ungeschützten API's ist nicht zu scherzen ^^
LG Maik
Benutzeravatar
noisefloor
User
Beiträge: 3882
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,
daemonTutorials hat geschrieben:Ja, was da fehlt ist eine Schnittstelle.
??? - MySQL ist bei entsprechender Konfiguration des Datenbankserver über ein Netzwerk / das Internet erreichbar. Da braucht man kein PHP und keinen Webserver. MySQL ist ja auch ein Datenbank*sever*.

Ob man MySQL (oder eine andere DB) so konfigurieren will, dass sie von außerhalb erreichbar ist, ist ein anderes Thema. Wurde oben ja auch schon gesagt.
Astraioz hat geschrieben:zufälligerweise hat ein Kollege noch eine MySQL Datenbank die er nicht braucht und freundlicherweise konnte ich mir diese borgen.
Das hört sich... sehr komisch an. Was hast du denn vor? Brauchst du dafür einen über das Netzwerk erreichbaren Datenbankserver?

Gruß, noisefloor
Benutzeravatar
daemonTutorials
User
Beiträge: 171
Registriert: Sonntag 6. Februar 2011, 12:06
Kontaktdaten:

noisefloor hat geschrieben:Hallo,
daemonTutorials hat geschrieben:Ja, was da fehlt ist eine Schnittstelle.
??? - MySQL ist bei entsprechender Konfiguration des Datenbankserver über ein Netzwerk / das Internet erreichbar. Da braucht man kein PHP und keinen Webserver. MySQL ist ja auch ein Datenbank*sever*.

Ob man MySQL (oder eine andere DB) so konfigurieren will, dass sie von außerhalb erreichbar ist, ist ein anderes Thema. Wurde oben ja auch schon gesagt.
ist ja auch lediglich eine Möglichkeit auf den Server eben ohne freigeschaltetem Zugriff von außen zuzugreifen.
LG Maik
Antworten