mySQL-Zugriff mit Visual Studio-Code Extension

  • 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

  • Go to Best Answer
  • Ä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/conf…for-remote-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.

    Menschen die keine Ironie verstehen finde ich super!

  • 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)

    Menschen die keine Ironie verstehen finde ich super!

    Edited 2 times, last by llutz ().

  • 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.

    Menschen die keine Ironie verstehen finde ich super!

    Edited once, last by llutz ().

  • 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!

    • Best Answer

    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

  • Auf dem Host mit dem mysqld:

    systemctl status mysql

    sudo lsof -i :3306

    lsof muss wahrscheinlich nachinstalliert werden

    Menschen die keine Ironie verstehen finde ich super!

  • 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

    Menschen die keine Ironie verstehen finde ich super!

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

    Quote

    # 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.

    Edited 2 times, last by Tigerbeere: Offtopic entfernt, Hinweis ergänzt ().