Externer mySQL-Datenbankzugriff

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Neu111
User
Beiträge: 69
Registriert: Dienstag 10. März 2020, 19:02

Hallo Community,
wie mein Nickname schon vermuten lässt, bin ich Python-Neueinsteiger.

Mein Ziel ist es u.a., Daten aus einer externen mySQL-Datenbank zu verarbeiten.
Mein Python-Script liegt lokal auf meinen Windows-PC, die mySQL-Datenbank dagegen auf einen Webhoster.

Ich nutze PyCharm mit Python 3.7, und habe u.a. das Modul "mysqlclient" installiert (andere mysql-Module schlugen bei der Installation auf Fehler - vermutlich weil Python in der Version 3.7 nicht unterstützt wird).

Mein Code sieht nun wie folgt aus:

Code: Alles auswählen

import MySQLdb
db = MySQLdb.connect(
    host = '',
    user = '',
    passwd = '',
    db = ''
)
Mein Webhoster hat mir für den externen Zugriff folgende Daten zur Verfügung gestellt:
Hostname:Port meineWebadresseOhneHTTP.de:22
SSH-Tunnel:Port mysqlx:xxxx (4 Zahlen)
Benutzername: bbbbb
Passwort: ccccc
Folgende Variationen wurden probiert:

Code: Alles auswählen

import MySQLdb
db = MySQLdb.connect(
    host = 'meineWebadresseOhneHTTP.de:22',
    user = 'bbbbb',
    passwd = 'ccccc',
    db = 'meinDatenbankname'
)
Fehlermeldung: "Unknown MySQL server host 'meineWebadresseOhneHTTP.de:22' (11001)"

Code: Alles auswählen

import MySQLdb
db = MySQLdb.connect(
    host = 'meineWebadresseOhneHTTP.de',
    user = 'bbbbb',
    passwd = 'ccccc',
    db = 'meinDatenbankname'
)
Fehlermeldung: "Can't connect to MySQL server on 'alfa3002.alfahosting-server.de' (10060)"


Wo liegt der Hund begraben?

Ich bin mir z.B. nicht sicher, ob der Host ohne HTTP(S) eingetragen werden muss, oder mit HTTP(S):// ?
Und wo kann/muss ich die Portangaben machen?

Für einen Lösungsansatz wäre ich sehr dankbar!

Gruß
Neu111
Neu111
User
Beiträge: 69
Registriert: Dienstag 10. März 2020, 19:02

Kurze Ergänzung: mittels Putty baute ich einen SSH-Tunnel zum Webhoster auf.

Außerdem änderte ich meinen Code wie folgt:

Code: Alles auswählen

import MySQLdb
db = MySQLdb.connect(
    host = 'meineWebadresseOhneHTTP.de',
    user = 'kkkkk', 
    passwd = 'eeeee',
    port = 3306,
    db = 'meinDatenbankname'
)
kkkkk und eeeee entsprechen den mySQL-Zugangsdaten (bbbbb und ccccc waren falsch, da sie die Zugangsdaten der SSH-Verbindung sind).

Trotzdem kommt die Fehlermeldung: "Can't connect to MySQL server on 'meineWebadresseOhneHTTP.de' (10060)"
Benutzeravatar
__blackjack__
User
Beiträge: 13120
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Neu111: Wenn Du einen Port auf den lokalen Recher getunnelt hast dann ist die Datenbank über diesen Port auf Deinem lokalen Rechner verfügbar.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Neu111
User
Beiträge: 69
Registriert: Dienstag 10. März 2020, 19:02

__blackjack__ hat geschrieben: Dienstag 10. März 2020, 20:44 @Neu111: Wenn Du einen Port auf den lokalen Recher getunnelt hast dann ist die Datenbank über diesen Port auf Deinem lokalen Rechner verfügbar.
Jetzt funktioniert es!
Herzlichen Dank für diesen wichtigen Hinweis.
Antworten