mySQL-Zugriff mit Visual Studio-Code Extension

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo in die Runde,

    ich möchte über Visual Studio Code auf meine mySQL-Datenbanken (mariadb) auf einem Pi 4 zugreifen.

    Im Browser kann ich http://192.168.178.100/phpmyadmin öffnen und mich dort normal anmelden. :bravo2:

    Gebe ich nun die gleiche Adresse in das VS-Code-Plugin ein, so erhalte ich folgenden Fehler:

    Code
    Error: getaddrinfo ENOTFOUND 192.168.178.100/phpmyadmin

    Ändere ich die Adresse der Datenbankverbindung in 192.168.178.100 kommt folgender Fehler:

    Code
    Error: connect ECONNREFUSED 192.168.178.100:3306

    In meinem Router (Fritzbox) habe ich den Port 3306 für den Pi als TCP-Verbindung freigegeben.

    Ich steh auf dem Schlauch - kann mir Jemand helfen?

    Danke!

    Michael

  • Zur hilfreichsten Antwort springen
  • Ändere ich die Adresse der Datenbankverbindung in 192.168.178.100 kommt folgender Fehler:

    Hast den mysql-Server denn auch entspr. konfiguriert, damit er im Netzwerk erreichbar ist (default ist er das nicht)?

    https://mariadb.com/kb/en/configur…-client-access/

    Im Browser kann ich http://192.168.178.100/phpmyadmin öffnen und mich dort normal anmelden.

    Damit erfolgt der Zugriff auf mysql über socket oder localhost, weil ja dein phpmyadmin auf dem entfernten Rechner läuft.

    In meinem Router (Fritzbox) habe ich den Port 3306 für den Pi als TCP-Verbindung freigegeben.

    Das ist überflüssig bei Verbindungen innerhalb deines LANs.

    Wenn du nichts zu sagen hast, sag einfach nichts.

  • Danke llutz für Deine Antwort.

    Wenn ich mich jetzt da richtig durchgearbeitet habe, kommt es doch "nur" auf das auskommentieren der bind-adress an, oder? Ich finde das schon sehr kompliziert wenn alle Befehle über das Betriebssystem einzugeben sind.

    Bin ich denn hier falsch unterwegs, wenn ich den bestehenden Zugang in phpmyadmin nutze und dort die Benutzerrechte verwalte? Dort gibt es doch auch die Einstellmöglichkeit den Hostname des Users auf % zu setzen. Funktioniert das nicht? Bei der Anleitung fällt es mir unheimlich schwer herauszufinden was ich konkret machen muss.

    Kennst Du eine Möglichkeit das für absolute Laien einfacher darzustellen?

  • in ich denn hier falsch unterwegs, wenn ich den bestehenden Zugang in phpmyadmin nutze

    Nein, das kann man machen. Der Unterschied ist eben, wenn du phpmyadmin (und damit einen Webserver) auf dem gleichen Rechner betreibst, wie den mysql-Server, dann erfolgen alle Zugriffe auf mysql von localhost aus (webserver -> mysql) - egal von welchem Rechner du phpmyadmin bedienst. Deswegen braucht mysql-server nicht im Netzwerk erreichbar sein.

    Wenn du aber direkten Zugriff auf mysql von einem anderen Rechner aus (z.B. Arbeits-PC mit VS-Code) haben willst, muss der mysql-Server im Netzwerk erreichbar sein.

    Man könnte das auch per ssh tunneln und dann doch auf localhost zugreifen, aber das führt zu weit.

    Wenn ich mich jetzt da richtig durchgearbeitet habe, kommt es doch "nur" auf das auskommentieren der bind-adress an, oder?

    Ja, und auskommentieren von "skip-networking", falls gesetzt.

    Kennst Du eine Möglichkeit das für absolute Laien einfacher darzustellen?

    Leider nein.

    (“auskommentieren“ = # am Anfang der Zeile setzen, damit diese ein Kommentar, also inaktiv ist)

    Wenn du nichts zu sagen hast, sag einfach nichts.

    2 Mal editiert, zuletzt von llutz (12. August 2020 um 19:15)

  • Wenn du aber direkten Zugriff auf mysql von einem anderen Rechner aus (z.B. Arbeits-PC mit VS-Code) haben willst, muss der mysql-Server im Netzwerk erreichbar sein (durch Setzen von bind-address).

    also muss ich bind-adress nicht auskommentieren, sondern dort dann die IP des Rechners, von dem aus ich zugreifen möchte, eintragen? Kann ich das auch mittels Wildcard irgendwie für alle Rechner aus dem lokalen Netzwerk regeln?

  • Sorry mein Fehler (meine mysql-server haben immer mehrere Adressen), du brauchst bind-address nicht!

    Wenn du mysqld einfach am Netzwerk lauschen lassen willst, passe die Config wie folgt an (dann "lauscht" mysqld an allen verfügbaren Netzwerkadressen/-adaptern):

    Code
    [mysqld] 
    ... 
    #skip-networking
    ... 
    #bind-address = <some ip-address>

    Anschliessend mysql neu starten. Es haben alle Rechner aus deinem LAN Zugriff.

    bind-address dient dazu bestimmte Adressen auszuwählen, auf Systemen mit mehreren IP-Adressen - es geht dabei nicht um Client-Zugriffe.

    Wenn du nichts zu sagen hast, sag einfach nichts.

    Einmal editiert, zuletzt von llutz (12. August 2020 um 13:49)

  • Es will einfach nicht - sorry - bin mit meinem Latein am Ende.

    Wie kann ich mir denn sicher sein, dass der Datenbank-Server überhaupt läuft? Sieht man das schon an den o.g. Fehlermeldungen? Die .cnf-Datei (also nur die im Ordner /etc/mysql) habe ich mir jetzt alle angesehen. Es stand kaum was drin und deine Textzeile aus dem letzten Beitrag habe ich hinzugefügt - keine Änderung!

    • Hilfreichste Antwort

    Hallo Frodo-1980,

    um dir hier ernsthaft zu helfen:


    Remoteverbindungen erlauben durch Hinzufügen von "#" vor bind-address, dann speichern und den Dienst neustarten.


    Code

    Code
    sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
    
    
    
    #bind-address = 127.0.0.1
    
    
    
    sudo service mysql restart

    Auf skip-networking brauchst du nicht zu achten. Der Tipp ist Schwachsinn. Ein Blick in die Konfigurationsdatei hilft manchmal!

    Den Port 3306 am Router machst du wieder dicht.


    Viele Grüße,

    Tigerbeere

  • sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf

    Liebe Tigerbeere,

    vielen Dank für Deinen Kommentar - in dieser Datei habe ich tatsächlich erstmalig einen bind-adress-Eintrag gefunden und auskommentiert. Es funktioniert momentan zwar noch immer nicht, aber Jetzt sieht die Datei so aus:

    Auf dem Host mit dem mysqld:

    systemctl status mysql


    sudo lsof -i :3306

    Code
    pi@raspberrypi:~ $ sudo lsof -i :3306
    COMMAND PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
    mysqld  726 mysql   26u  IPv4  17928      0t0  TCP localhost:mysql (LISTEN)
  • , eher weil diese Beiträge mit sinnlosen Hinweisen dann nachträglich gut und gerne 5mal editiert und gerechtfertigt werden müssen! Andere editieren Tippfehler, du den Inhalt. Die Konfigurationsdatei gibt allerdings oft Aufschluss über deine Holzwege. Leider hast du in 20 Jahren Adminerfahrung scheinbar verlernt, in die Aktuelle hinein zu gucken.

    Es steht doch genau beschrieben: "absoluter Laie", "mariadb", "Pi4"

    Ich nenne dann wenigstens die richtige Datei, gucke da auch wirklich rein, lese die Anmerkungen oder teste eigenständig und verlasse mich nicht auf veraltete Erfahrungswerte oder Anleitungen!!!!!!!!!!!!!!!!!!!!! Also das genaue Gegenteil. Du schreibst Beiträge ohne die Anleitungen oder Konfigurationsdateien vor Augen zu haben.

    Mein Ratschlag: Fang bitte wieder damit an, in die Konfigurationsdateien zu schauen, dann verbreitest du hier automatisch weniger Müll.

  • gerne 5mal editiert und gerechtfertigt werden müssen! Andere editieren Tippfehler, du den Inhalt.

    Zugegeben, der unglückliche Versuch dir den Unterschied zwischen einer Option und einem Kommentar zu verdeutlichen - erfolglos.

    veraltete Erfahrungswerte oder Anleitungen

    Letzteres teile bitte den Leuten von mariadb.com mit, deren Doku ich verlinkte und aus der ich die zu beachtenden Optionen zitierte (Bedeutung "falls"). Es ging doch um mariadb, oder? Herstellerdoku ist nicht anfängergeeignet - ist es das, was du damit sagen willst?

    sorry Frodo-1980

    Wenn du nichts zu sagen hast, sag einfach nichts.

  • Zitat aus der aktuellen Standardkonfiguration /etc/mysql/mariadb.conf.d/50-server.cnf

    Zitat

    # Instead of skip-networking the default is now to listen only on

    # localhost which is more compatible and is not less secure.

    bind-address = 127.0.0.1

    Daher ist skip-networking nur eine zusätzliche Verwirrung für Anfänger.

    ---- In der neuen Konfigurationsdatei sieht man diesen zitierten Hinweis.

    ---- In der verlinkten Dokumentation steht es im ersten Satz drin.

    2 Mal editiert, zuletzt von Tigerbeere (15. August 2020 um 18:03) aus folgendem Grund: Offtopic entfernt, Hinweis ergänzt

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!