Kodi Verbindung zu MariaDB nach Upgrade

  • Hallo,


    Ich habe eine TS-451 NAS

    Derzeit läuft Kodi 19.1 Matrix.

    Weil die Version der internen MariaDB recht alt ist habe die aktuelle Version 10.4.18 über die Entware-App installiert und eingerichtet.

    Die vorhandenen SQL-Datenbanken (mysql, phpmyadmin, MyMusic82, MyVideos119) habe ich vorher exportiert und auf das neue MariaDB importiert. Die interne MariaDB habe ich über die Systemsteuerung deaktiviert und die neue MariaDB über die Konsole gestartet und läuft auch.

    Code
    [~] # /opt/etc/init.d/S70mysqld start
    [~] # /opt/etc/init.d/S70mysqld status
    mysqld is already running


    Mit phpMyAdmin kann ich auf das neue MariaDB zugreifen und die Datenbanken sind vorhanden.


    Aber Kodi bekommt keine Verbindung zu der neuen Datenbank. Die NAS-IP hat sich nicht geändert der Port ist weiterhin 3306 wie bei der alten Datenbank auch. Daher habe ich die "advancesettings.xml" unverändert gelassen. Kodi startet mit leeren Einträgen in den Filmen und der Musik. In der Log-Datei ist als Fehler hinterlegt, dass die Datenbanken MyMusic82 und MyVideos119 nicht vorhanden sind. Wenn ich wieder zurück auf die interne MariaDB umschalte werden die Datenbanken sofort wieder gefunden.


    Hier habe ich die Ergebnisse nach der Suche der SQL-Prozesse:


    Kann mir jemand helfen und schreiben, warum auf die neue Datenbanken nicht zugegriffen werden kann. Muss ich vorher noch etwas anpassen oder einstellen?

    Ich freue mich auf gute Ratschläge.


    Viele Grüße

  • Hallo,


    was sagt denn


    Code
    SHOW DATABASES;

    im externen MySQL-Server? Tauchen die beiden Kodi-Datenbanken auf?


    Und sind die Kodi-User angelegt?


    Code
    USE mysql;
    SELECT * FROM user WHERE user='kodi';

    Viele Grüße!


    Lars


    PS: Ich freue mich, dass der aktuelle MariaDB-Server nun läuft ;)

  • Hallo Lars,


    vielen Dank, dass Du dich noch mal meldest.

    Die MariaDB-Config-Datei wurde irgendwie nicht richtig eingelesen. Daher wurde die Installation auch nicht wie angegeben durchgeführt. Ein alter Kollege hat das gefixt, wie weiss ich nicht genau, sonst würde ich das schreiben.


    Aber nun bin ich noch immer nicht am Ziel angekommen und Kodi findet die Datenbanken nicht.


    Woher die DB mysql50#.streams kommt, weiss ich nicht.


    Viele Grüße

  • Code
    [~] # telnet localhost 3306
    Y
    5.5.5-10.4.18-MariaDB
    XoDElpo\▒▒-^Bp.1KgEcAZ"mysql_native_passwordConnection closed by foreign host
    [~] #
  • Das sieht sehr gut aus! Der aktuelle MariaDB-Server läuft und lauscht auch auf dem richtigen Port.


    Ändere mal bitte in Deiner Kodi-Config den Eintrag


    Code
    <host>192.168.178.22</host>

    in


    Code
    <host>localhost</host>

    oder


    Code
    <host>127.0.0.1</host>

    Und danach bitte Kodi neu starten.

  • Hallo,


    nun kommt als Fehlermeldung bei dem Zugriff auf die Datenbanken mit Access denied.

    Die Liste z. B mit meinen Filmen in der Datenbank bekomme ich angezeigt aber ohne Zusatzinfos und Bilder. Wenn ich einen Film starten möchte wird Kodi automatisch beendet.

    Die log-Datei sende ich im Anhang mit.


    Kann mir jemand erklären wo der Unterschied beim Zugriff auf die NAS-interne MariaDB und der neueren MariaDB über Entware liegt?


    Soll ich lieber die Datenbanken mit Kodi exportieren und dann importieren ?


    Ich freue mich über weitere Hilfe.


    Viele Grüße

  • ok.


    Dein Nutzer hat keine Rechte auf der Datenbank. Also wieder in MariaDB rein und dann folgende Befehle ausführen:


    Code
    GRANT ALL PRIVILEGES ON MyMusic82.*  TO 'kodi'@'127.0.0.1';
    GRANT ALL PRIVILEGES ON MyVideos119.*  TO 'kodi'@'127.0.0.1';

    Einmal editiert, zuletzt von lhsei ()

  • Die Befehle funktionieren nicht

    Code
    MariaDB [(none)]> GRANT ALL PRIVILEGES ON MyMusic82.*  TO 'kodi'@'127.0.0.1';
    ERROR 1133 (28000): Can't find any matching row in the user table
    MariaDB [(none)]> GRANT ALL PRIVILEGES ON MyVideos119.*  TO 'kodi'@'127.0.0.1';
    ERROR 1133 (28000): Can't find any matching row in the user table

    Ich habe die Benutzerrechte für kodi mit phpMyAdmin für alle DBs und alle Hosts hinzugefügt.

    Die Fehler sind immer noch vorhanden. Warum ist es so schwer die Datenbank zu wechseln?

    Einmal editiert, zuletzt von verdi ()

  • Der Fehler besagt, dass es den Nutzer kodi für den Host 127.0.0.1 nicht gibt. Daher muss der Nutzer neu angelegt werden.


    Das deutet alles darauf hin, dass beim Wechsel der DB-Engine die Datenbank mysql nicht korrekt exportiert und importiert wurde - in dieser Datenbank liegen u.a. alle Userdaten.


    Den User kodi für 127.0.0.1 legt man mit folgendem Befehl an:


    Code
    CREATE USER 'kodi'@'127.0.0.1' IDENTIFIED BY 'PASSWORT';

    Wobei PASSWORT durch das korrekte Passwort, welches mit der kodi-Config übereinstimmen muss, ersetzt wird. Danach noch mal die beiden GRANT Befehle von oben und als letztes zum Übernehmen der Änderungen:


    Code
    FLUSH PRIVILEGES;

    Fertig.


    Testen kannst Du es so:


    Code
    mysql -u kodi -p
    USE MyMusic82;
    SHOW TABLES;
    SELECT * FROM tabelle;
    USE MyVideos119;
    SHOW TABLES;
    SELECT * FROM tabelle;

    Wobei tabelle jeweils durch eine beliebige Tabelle aus der jeweiligen Datenbank ersetzt werden muss.

    2 Mal editiert, zuletzt von lhsei ()

  • Der Benutzer kodi war in der "alten" Datenbank und ist genauso in der neuen DB vorhanden. Ich habe wie oben geschrieben die Freigabe für alle Hosts und alle erforderlichen Datenbanken neu gesetzt

    Code
        kodi    %    Ja    ALL PRIVILEGES        Ja    Rechte ändern Rechte ändern    Exportieren Exportieren
        kodi    nas-hoops    Ja    ALL PRIVILEGES        Ja    Rechte ändern Rechte ändern    Exportieren Exportieren
        mariadb.sys    localhost    Nein    USAGE        Nein    Rechte ändern Rechte ändern    Exportieren Exportieren
        root    localhost    Ja    ALL PRIVILEGES        Ja    Rechte ändern Rechte ändern    Exportieren Exportieren

    Es will nicht laufen :qnap:

  • Dann setze doch mal testweise die root-Anmeldung in der Kodi-Config ein und schaue, ob es mit dem root-Nutzer der MariaDB klappt.

  • Super - ich danke Dir!

    Mit root hat die Verbindung geklappt nun habe ich den Benutzer kodi neu eingerichtet.

    Kodi auf der NAS läuft nun mit dem Benutzer kodi und der IP 127.0.0.1


    Nun wollte ich gleich Kodi von meinem Win10 PC mit verbinden, also habe dort auch die IP 127.0.0.1 eingetragen in die advancedsetting. Zuvor habe ich einen neuen Benutzer angelegt: kodi@192.168.178.28 (=IP vom PC) mit den gleichen Rechten wie für die Kodi-NAS. Keine Verbindung zu den Datenbanken

    Code
    2021-07-31 01:30:44.348 T:11680   ERROR <general>: Unable to open database: MyMusic82 [2002](Can't connect to MySQL server on '127.0.0.1' (10061))
    2021-07-31 01:30:46.066 T:15056    INFO <general>: CIRServerSuite::Process: failed to connect to irss, will keep retrying every 5 seconds


    Braucht Windows nun einen extra Benutzer mit anderen Einstellungen?

  • Hallo,


    das kann nicht klappen :D


    127.0.0.1 ist die feste IP des lokalen Hostes, d.h. Du versuchst auf Deinem PC eine lokal installierte Datenbank aufzurufen, die es gar nicht gibt.


    Auf Deinem PC musst Du entweder den FQDN oder die IP des NAS verwenden. Aber Achtung: Natürlich muss dann die Kombination aus Nutzer und IP-Adresse auch die Berechtigungen (GRANT....) auf der Datenbank haben.

    Einmal editiert, zuletzt von lhsei ()

  • Hallo,


    die Verbindung mit der NAS-IP geht aber auch nicht. Diese war ja noch eingestellt und habe ich geändert, weil die Verbindung nicht funktionierte. Warum funktioniert die Verbindung mit der IP nicht mehr. Was muss ich nun eintragen? Wie wird diese FQDN angegeben?

    Code
    2021-08-01 19:26:09.924 T:14952   ERROR <general>: Unable to open database: MyMusic82 [2002](Can't connect to MySQL server on '192.168.178.22' (10061))
  • Hallo Verdi,


    ich versuche mal, ein bisschen Licht ins Dunkel zu bringen.


    1. Der FQDN (full qualified domain name) ist der eindeutige Netzwerkname des NAS. Dieser wird entweder über DNS oder WINS in die IP des NAS "übersetzt".

    2. Wenn die Verbindung mit der IP nicht klappt, dann bitte prüfen, ob der MariaDB-Server an eine bestimmte IP (z.B. 127.0.0.1 für localhost) gebunden ist. Dazu bitte in der MariaDB-Konfiguration prüfen, ob die Zeile


    Code
    bind-address 127.0.0.1

    mit einem # auskommentiert ist. Falls nein, bitte auskommentieren und den MariaDB-Server neu starten.


    3. Zum Testen, ob der MariaDB-Server auf externe IPs "lauscht", auf dem PC in einer Kommandozeile den folgenden Befehl ausführen:


    Code
    telnet IP_DES_NAS 3306

    Dann siehst Du, ob der Server antwortet. Falls nein, bitte noch mal die Konfiguration prüfen.

    Einmal editiert, zuletzt von lhsei ()

  • Hallo,


    vielen Dank!

    Die Config-Datei habe ich geändert - wie wird die geänderte Datei geladen. Muss dafür MariaDB komplett neu installiert werden?

    Code
    opkg update
    opkg upgrade

    Die Befehle scheinen nicht zu ausreichend zu sein.


    Telnet ist auf Windows 10 nicht mehr aktiv - daher ich zunächst eine Fehlermeldung erhalten, dass der Dienst nicht verfügbar ist. Nun habe ich Telnet manuell aktiviert, die Verbindung kann aber nicht hergestellt werden

    Code
    C:\Users\ego>telnet 192.168.178.22 3306
    Verbindungsaufbau zu 192.168.178.22...Es konnte keine Verbindung mit dem Host hergestellt werden, auf Port 3306: Verbindungsfehler
  • Hallo,


    der MariaDB-Server wird mit folgendem Befehl neu gestartet:


    Code
    /opt/etc/init.d/S70mysqld restart
  • Hallo


    ich bin mir nicht sicher, ob der "restart" wirklich die Änderung der Config-Datei berücksichtigt. In der Log-Datei sehe ich keinen Unterschied:

  • Da steht es doch im Protokoll. Der Server bindet aktuell nur an localhost (127.0.0.1).


    Code
    2021-08-05 21:43:36 0 [Note] Server socket created on IP: '127.0.0.1'.


    Prüfe bitte noch mal Deine Config-Datei. Da ist irgendwo der Parameter drin.


    Bitte auch prüfen, dass nicht der Parameter


    Code
    skip-networking 

    gesetzt ist.


    Ansonsten mal den Parameter


    Code
    bind-address 0.0.0.0


    setzen. Dann lauscht MariaDB auf allen Netzwerken.


    Ist hier auch noch mal in der offiziellen Dokumentation zu MariaDB beschrieben:


    Anleitung MariaDB Networking

    Einmal editiert, zuletzt von lhsei ()