MariaDB Zugriffsprobleme

  • Hallo zusammen,


    vielleicht ein Hinweis vorne weg: mein NAS verwende ich nur im lokalen Netzwerk und habe nicht vor einen Zugriff von außen zuzulassen. Num zum eigentlichen Anliegen, ich habe über das AppCenter MariaDB und phpMyAdmin installiert und kann über letzteres auf ersteres auch zugreifen. Da ich MariaDB für Container nutzen möchte, habe ich auch das Häkchen bei "TCP/IP-Netzwerk aktivieren" gesetzt. Nun war meine naive Vorstellung, dass ich bei MariaDB einen neuen Nutzer und Datenbank für den Container erstelle und die relevanten Daten natürlich dem Containers über die ContainerStation lediglich mitteile.


    • Muss ich dem Container die URL vom NAS (welches eine statische URL zugewiesen bekommt) sowie den Port der MariaDB mitteilen oder kann ich anstatt der URL auch einfach localhost eingeben, da alles auf dem selbigen Gerät läuft?
    • Bei dem Nutzer habe ich "Jeder Host" angegeben, aber wäre nicht "localhost" sicherer/besser? Oder müsste ich den Namen das NAS wie z.B. nasd69a01 angeben? Ich fürchte ich bringe da gerade einiges durcheinander...


    Dummerweise klappt die Verbindung weder unter Angabe der URL noch von localhost. Wenn ich bei mir im Browser die URL vom NAS mit dem Port zur MariaDB eingebe, erhalte ich lediglich SSL_ERROR_RX_UNKNOWN_RECORD_TYPE

    • Ich hätte vermutet, dass es kein Fehler ist, da die MariaDB vermutlich kein Webinterface hat und hier nur eine API oder so erwartet wird, oder muss ich dem Fehler Beachtung schenken?


    Jedenfalls habe ich per phpMyAdmin noch etwas rumgeschaut, konnte aber keine Fehler finden, außer folgendem:


    Unbenannt.PNG


    Ich sollte vielleicht erwähnen, dass ich von MariaDB 5 auf 10 umgestiegen bin und das ich mich nicht erinnern kann, einen Nutzer "Jeder" erstellt zu haben. Vermutlich hatte ich etwas rumgespielt und den Nutzer nicht gelöscht oder es ist beim Umsteig von MariaDB 5 auf 10 etwas schief gelaufen. Glücklicherweise har er keine Rechte, außer auf eine leere Datenbank test.

    • Bei Benutzername "Jeder" für Host "%" kommt die Meldung, dass der Benutzer nicht in der Benutzertabelle gefunden wurde. Wie ist damit umzugehen? Kann ich diesen gefahrlos löschen?
    • Ich verstehe die Warnung darüber nicht "Dies wird Benutzer vom Verbinden abhalten, falls der Host-Teil ihres Konte eine Verbindung von jedem Host (%) erlaubt." Wenn also "Jeder" von jedem Host (%) zugreifen darf, dann können andere Nutzer, bei denen ebenfalls % angegeben wurde, nicht darauf zugreifen? Oder wie ist dies zu verstehen?

    Auf der Suche nach möglichen weiteren Problemen bin ich noch auf folgendes gestoßen:

    Unbenannt2.PNG

    • Liegt womöglich das Probelm darin, dass SSL nicht verwendet wird? Ich hätte erwartet, dass automatisch selbsterstelle Zertifikate verwendet werden.



    Viele Grüße

    Frank

  • oder kann ich anstatt der URL auch einfach localhost eingeben

    Nein. Mit localhost bekommst du die IP des Containers. Du brauchst aber die IP des Hosts, d. h. des NAS, und das ist eine andere.


    Und da könnte schon das eigentliche Problem liegen. Ich kenne jetzt den User "Jeder", den MyPhpAdmin anzeigt, nicht. Aber auf jeder MySQL- und Maria-DB-Installation gibt es eienn User root, und dieser kann sich nur von localhost aus anmelden. Im konkreten Falle heißt das, dass sich ein Programm auf dem NAS selbst als root anmelden kann, ein Programm im Container aber nicht, da aus Sicht der Datenbank die Anmeldung nicht von localhost kommt.


    Du musst also einen oder mehrere User anlegen, welche sich von überall aus anmelden dürfen, und ihnen die nötigen Rechte auf den Datenbanken verschaffen (mit GRANT).


    Bei der DB-Anmeldung im Container müssen dann natürlich User, Passwort und Datenbank mitgegeben werden.

    Liegt womöglich das Probelm darin, dass SSL nicht verwendet wird?

    Nein. Der Zugriff geht auch ohne SSL.

  • Danke für die Rückmeldung. Den Nutzer "Jeder" habe ich jetzt gelöscht. Wie gesagt, hatte ich in der MariaDB per phpMyAdmin einen Nutzer erstellt, welcher von überall aus zugreifen können sollte, so ähnlich sehen die zugehörigen Anmeldeinformationen aus:

    Unbenannt3.PNG


    Bei Hostname steht "Jeder Host", also sollte es doch gehen, oder?


    Über den Container habe ich für DBHOST die IP-Adresse von meinem NAS gegeben und bei DBPORT 3307 eingetragen (so wir es auch bei der MariaDB-App steht). Nutzername und Passwort habe ich mehrmals überprüft und kann mich damit über phpMyAdmin anmelden, daran sollte es also nicht liegen.


    Ich habe daher im Container das mir mal genauer angeschaut was passiert, und bevor

    Code
    "unable to connect to database"

    kommt, erhalte ich noch die Fehlermeldung

    Code
    "Servname not supported for ai_socktype"

    Wenn ich statt der IP-Adresse den Namen nasd69a01 bei DBHOST eingebe, erhalte ich dagegen

    Code
    "Connection refused"

    Ich hätte gedacht, dass er nasd69a01 automatisch zu der zugehörigen IP-Adresse auflöst und somit wenn dann der gleiche Fehler kommen müsste...

  • Der Default-Port für MySQL und MariaDB ist 3306. Probier den mal aus an Stelle von 3307.


    Ansonsten: Wie sieht der Connect (die Konfiguration bzw. der Connect-String) im Container aus?

  • Nach dem Wechsel von MariaDB 5 auf 10, hat er mit Port 3307 angezeigt:

    Unbenannt4.PNG

    Ich habe den Port dennoch dort auf 3306 geändert und bei dem Container die Einstellung auch entsprechend angepasst. Hier sind noch die entsprechenden Einstellungen:


    Unbenannt5.PNG


    Und bei der Konsole im Container kommt nur:

    Wennich https durch http ersetze, erhalte ich exakt die gleichen Ausgaben nur halt mit http anstatt mit https. Wenn ich statt der IP-Adresse localhost eingebe, kommt Cannot assign requested address (was zu deiner Erklärung passen würde), gebe ich NASD69A01 ein, erhalte ich Connection refused.


    Wie gesagt, per phpMyAdmin kann ich mich mit dem Account einloggen und bei Status wird mir auch folgendes angezeigt;

    Unbenannt6.PNG


    Also einloggen kann ich mich mit dem Benutzer und Passwort.


    Ergänzung: Falls das eine Rolle spielen sollte, Netzwerkmodus beim Container ist NAT und Hostname NASD69A01.

    Einmal editiert, zuletzt von Frank123 ()

  • Wieso eigentlich https? Das geht doch gar nicht über das https- oder http-Protokoll.


    Lass das https mal weg und gib nur die reine IP an, also in etwa PAPERLESS_DBHOST=192.168.178.27.

  • Hm, ich ging irgendwie davon aus, dass ich ein Protokoll mit angeben musste. Aber du hast Recht, nachdem ich nur die IP-Adresse eingegeben habe, komm nurn:


    Code
    Paperless-ngx docker container starting...
    Creating directory /tmp/paperless
    Adjusting permissions of paperless files. This may take a while.
    Waiting for MariaDB to start...
    Waiting for Redis...
    Redis ping #0 failed.
    Error: Error 99 connecting to localhost:6379. Cannot assign requested address..

    Es kommt zwar jetzt zu einen anderen Fehler, der hat aber mit MariaDB nichts mehr zu tun. Da er weiterhin abbricht, kann ich nicht erkennen, ob wirklich alle sklappt, aber ich würde davon ausgehen, da er bezüglich MariaDB keine Fehlermeldung produziert. Vielen Dank für deine Hilfe, auch wenn es an so einer Kleinigkeit hing...


    Ach so, ich vergaß den Thead als erleidgt zu markieren, dies habe ich nun nachgeholt.

    Einmal editiert, zuletzt von Frank123 () aus folgendem Grund: Ein Beitrag von Frank123 mit diesem Beitrag zusammengefügt.