2016-09-26 4 views
0

Während ich habe keine Probleme auf meinem localhost Datenbank verbinden auf diese Weise:Python MySQLdb Verbindung zur Online-Datenbank

import MySQLdb 

localdb = MySQLdb.connect(host="127.0.0.1",  
          user="root",   
          passwd="password",   
          db="events") 

ich meine Online-Datenbank verbinden couldent.

Normalerweise greife ich manuell auf diese Datenbank mit phpMyAdmin und die Adresse ist so etwas wie 212.227.000.000/phpmyadmin

So habe ich versucht, so etwas wie

onlinedb = MySQLdb.connect(host="212.227.000.000" ... 

oder

onlinedb = MySQLdb.connect(host="212.227.000.000/phpmyadmin" ... 

Aber ich bekomme einen Fehler wie:

OperationalError: (2003, "Can't connect to MySQL server on '212.227.000.000' (10061)") 
+1

nur weil phpmyadmin auf dieser IP ist, bedeutet nicht mysql ist. Ist MySQL für TCP-Verbindungen konfiguriert? Ist das wirklich die IP, auf der MySQL läuft? –

+0

Und 'php' ist hier was? –

+0

Und selbst wenn es so wäre, willst du dich trotzdem nicht mit phpMyAdmin verbinden; Sie möchten sich mit der Datenbank selbst verbinden; also warum würdest du phpmyadmin in die host string schreiben? –

Antwort

1

Es klingt wie 212.227.000.000/phpmyadmin ist die URL von PHPMyAdmin (die Sache, die Sie im Browser öffnen). Wenn dies der Fall ist, ist die Datenbank möglicherweise nicht auf dem Computer mit IP 212.227.000.000 gehostet. Sie sollten prüfen, wie PHPMyAdmin eine Verbindung zur Datenbank herstellt. Wenn PHPMyAdmin eine Verbindung zu 127.0.0.1 herstellt, bedeutet dies wahrscheinlich, dass die Datenbank nicht auf die externe IP-Adresse hört und nicht über das Netzwerk erreichbar ist.

Wenn Sie SSH-Zugriff auf 212.227.000.000 haben, können Sie das mit dem netstat Befehl überprüfen:

$ netstat -pant | grep LISTEN | grep 3306 
tcp 0 0 0.0.0.0:3306  0.0.0.0:* LISTEN  - 

Die 0.0.0.0 oben zeigt an, dass MySQL auf alle IPs zuhört, und vorbehältlich Firewalls, sollten Sie in der Lage sein, eine Verbindung zur Datenbank herzustellen.

Andernfalls, wenn es 127.0.0.1:3306 sagt, kann die Datenbank nur von der Maschine selbst und nicht über das Netzwerk zugegriffen werden. In diesem Fall können Sie einen SSH-Tunnel verwenden.

+0

thx für Hilfe. Ja, es heißt 127.0.0.1:3306. Also sollte ich einen SSH-Tunnel mit Python verwenden? Sorry mein Wissen ist begrenzt! – michltm

+0

Wenn die Verbindung zur Datenbank über einen längeren Zeitraum stabil sein muss, empfehle ich keinen SSH-Tunnel. Wenn Sie die Kontrolle über den Computer haben, auf dem die Datenbank ausgeführt wird, können Sie die MySQL-Konfiguration so ändern, dass die externe IP-Adresse überwacht wird. Dies kann jedoch nicht sicher sein, es sei denn, Sie verwenden SSL-Verbindungen (http://dev.mysql.com/doc/). refman/5.7/de/secure-connections.html). Andererseits bin ich mir nicht sicher, ob Python sichere Verbindungen unterstützt. Sie können in einen Stunnel (https://www.stunnel.org) von der lokalen Maschine auf die Remote-Maschine, die ähnlich wie ein SSH-Tunnel, aber stabil –

+0

Ok thx Ich werde versuchen, alle diese Vorschläge! – michltm