Datenbank Server verhaelt sich komisch

  • Hi Zusammen,


    Ich habe durch Zufall ein Problem an meinem internen MariaDB Server festgestellt welches ich mir nicht erklaeren kann.



    Zitat von Debian Shell

    → mysql -V

    mysql Ver 15.1 Distrib 10.5.12-MariaDB, for debian-linux-gnu (x86_64) using EditLine wrappe


    Zum Problem:


    Obwohl meine Nutzer als host % eine Wildcard haben, scheint ein Login auf PHP-Ebene nur teilweise moeglich.

    pasted-from-clipboard.png


    Einer meiner WSC Instanzen scheint Problemlos zu funktionieren, aber ein PDO-Test auf exact die selbe DB mit dem selben Nutzer welchen das WSC nutzt schlaegt fehl.

    Eine andere nicht-WSC Applikation dagegen hat mit selbiger Test-Methode kein Problem und sagt "Connected Successful" doch die App nennt als Fehler Access denied.


    Test-Code:

    PHP
    <?php
    $servername = "nhmucmasql01.nethavn.net";
    $username = "central_nethavn-p";
    $password = "<Password>";
    $db ="central_nethavn-p";
    
    try {  $conn = new PDO("mysql:host=$servername;dbname=$db", $username, $password);  // set the PDO error mode to exception  $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);  echo "Connected successfully";
    } catch(PDOException $e) {  echo "Connection failed: " . $e->getMessage();
    }
    ?>

    Getestet wird dies von den beiden Webservern (nhmucwebsrv01.nethavn.net bzw. nhmucwebsrv02.nethavn.net) welche quasi als "extern" gelten fuer den DB-Server nhmucmasql01.nethavn.net


    Result #1: WSC

    pasted-from-clipboard.png

    WSC funktioniert:

    pasted-from-clipboard.png


    Result #2: non-WSC

    pasted-from-clipboard.png

    pasted-from-clipboard.png



    Was ich bereits versucht habe:

    1.) Login Test via PHPMyAdmin mit den entsprechenden Nutzern (lief problemlos)

    2.) Alle Wildcard User loeschen und neu-anlegen.

    3.) Komplettes loeschen der mariadb und mariadb-server Pakete via apt purge <mariadb-pkg> und Neu-Installation + Import Datenbanken + User re-create


    Hat da eventuell jemand eine Idee was da los sein koennte?

    Det blæser en halv pelikan.

    I may look calm. But inside my mind I have killed you 20 times in 5 minutes in 20 different ways.


  • Was ist denn der Unterschied zwischen dbtest.php und dbtest2.php?

    Vielleicht kann man daraus etwas schließen.

    pasted-from-clipboard.png

    Keiner, das ist der selbe obige Test-Code, einzig der Nutzername, Password und der DB-Name sind anders. Aber selbst zwei unterschiedliche Apps melden Unstimmigkeiten, WSC geht, meine Laravel App nicht. Im DB Test ist es aber genau umgekehrt.

    Det blæser en halv pelikan.

    I may look calm. But inside my mind I have killed you 20 times in 5 minutes in 20 different ways.


  • Was kommt denn bei dem Query hier als Output raus?

    SQL
    SELECT `Host`, `User`, `plugin` FROM `mysql`.`user`;


    Mein Verdacht wäre jetzt, dass du ein Problem mit einem MySQL-Authentifikationsplugin hast. Nach einem Test auf meinem Server konnte ich das Problem nämlich nicht reproduzieren.

    Ist jetzt nur eine Vermutung, mal schauen..



    Edit:

    Neuer Ansatz: Hast du schonmal was von anonymen Usern gehört? Eventuell könnten diese das Problem darstellen.

    Schau dir mal mysql_secure_installation (https://mariadb.com/kb/en/mysql_secure_installation/).


    Vielleicht hilft auch ein Lösungsansatz von hier: https://stackoverflow.com/ques…billlocalhost-using-passw

    Einmal editiert, zuletzt von Andosius ()

  • Probiere es ansonsten mal mit einem einfachen Debug-Kennwort... Also ohne Sonderzeichen und co. bspw. 1234

    Mir sind durch Kennwörter schon die Kuriosesten Fehler passiert.

    Lieber ein Realdenker, als ein Querdenker

  • Was kommt denn bei dem Query hier als Output raus?

    pasted-from-clipboard.png



    Schau dir mal mysql_secure_installation

    Das Kommando wurde bereits nach der Installation ausgefuehrt. Anonyme User habe ich keine.


    Vielleicht hilft auch ein Lösungsansatz von hier: https://stackoverflow.com/ques…billlocalhost-using-passw

    pasted-from-clipboard.png



    Probiere es ansonsten mal mit einem einfachen Debug-Kennwort... Also ohne Sonderzeichen und co. bspw. 1234

    Das WSC nutzt ein 30-stelliges PW mit Sonderzeichen und Co und es funktioniert. Also der connect zur DB geht und er kann die DB nutzen.

    Und auch meine Guacamole Installation welche eine DB da hat funktioniert komischerweise ohne Probleme.

    Det blæser en halv pelikan.

    I may look calm. But inside my mind I have killed you 20 times in 5 minutes in 20 different ways.


  • Das WSC nutzt ein 30-stelliges PW mit Sonderzeichen und Co und es funktioniert. Also der connect zur DB geht und er kann die DB nutzen.

    Okay, das ist interessant. Ist das Passwort der dbtest2.php länger oder enthält es viele verschiedene Sonderzeichen?

    MySQL erlaubt eine maximale Passwortlänge von 41 Zeichen und unterstützt auch nicht alle Sonderzeichen, die es so gibt.

    Kann natürlich auch sein, dass man das bereits in MariaDB gefixt hat, das kann ich dir nicht sagen. Das kannst du ja mal ausprobieren.


    https://stackoverflow.com/a/54647836

    https://dev.mysql.com/doc/refm…s-scope-column-properties


    Mein letzter Vorschlag wäre, dass du die Treiberoptionen vom WCF übernimmst, danach bin ich ratlos.

    Die findest du hier:

    https://github.com/WoltLab/WCF…e/MySQLDatabase.class.php


    defaultDriverOptions ist standardmäßig ein leeres Array.



    Viel Erfolg.

  • Okay, das ist interessant. Ist das Passwort der dbtest2.php länger oder enthält es viele verschiedene Sonderzeichen?

    Ich habe das Passwort mal geaendert. Das alte Passwort ist dieses hier gewesen:

    Code
    $HMCct%ryna7n%f%cPyzBH&mVW@9*#

    Es sind 30 Zeichen, also eigentlich nicht zu viel, aber auch nicht zu wenig. Selbige Laenge hat das Passwort von dbtest.php

    Und ich komme ja auch vom Web-Server per PHPMyAdmin mit den selben Usern und Passwords auf die DB. Und das WSC scheint da ja auch mit den Daten etwas anfangen zu koennen.


    Alles sehr strange...


    Mein letzter Vorschlag wäre, dass du die Treiberoptionen vom WCF übernimmst, danach bin ich ratlos.

    Kann ich nach der Arbeit mal probieren, wuerde ich aber nicht als Loesung sondern eher Workaround sehen und eigentlich sollte die DB ja normal funktionieren, aber dieser dumme Fehler xD

    Det blæser en halv pelikan.

    I may look calm. But inside my mind I have killed you 20 times in 5 minutes in 20 different ways.


  • Ich habe den Fehler gefunden.


    Nachdem ich dein Passwort benutzt habe, hatte ich das gleiche Problem. Da war aber der nginx-Log sehr hilfreich, um das Problem zu identifizieren. :D

    Du musst die $-Zeichen escapen, da PHP sonst denkt, dass diese eine Variable darstellen sollen:

    Undefined variable: HMCct in /var/www/phpmyadmin/dbtest.php on line 4" while reading response header from upstream

    Also müsste in der .php $password = "\$HMCct%ryna7n%f%cPyzBH&mVW@9*#"; statt $password = "$HMCct%ryna7n%f%cPyzBH&mVW@9*#"; stehen. :)

  • Das ist wohl nur ein Fehler zwecks meienr Tast-Datei. Netter fund, damit geht dann der Test-Connect, Danke.

    Scheint also eher ein Problem meiner Laravel App zu sein und kein generelles DB Problem.



    pasted-from-clipboard.png


    pasted-from-clipboard.png


    Hab mir mal einen mariadb-client installiert, DB connect geht, irgendwas anderes ist da schief.


    pasted-from-clipboard.png



    .env Datei:

    pasted-from-clipboard.png


    User PW hat kein $ :D


    Muss ich wohl nach der Arbeit mal weiter suchen.

    Det blæser en halv pelikan.

    I may look calm. But inside my mind I have killed you 20 times in 5 minutes in 20 different ways.


  • Ich hab's doch gesagt.

    The Cake is a lie. Aber ha ich hab mir unnoetig Probleme gemacht xD



    Ist das Zeichen vielleicht auch drinnen?

    Zum Glueck nicht, nur & # ! @ und *

    Aber ich werde nach der Arbeit mal JiU's Vorschlag mit einem Debug Passwort probieren nur im sicher zu sein :D



    E: Danke zum SO Link, das Licht am Ende des Tunnels ist nah, nur hoffen dass es kein ICE ist :D

    Det blæser en halv pelikan.

    I may look calm. But inside my mind I have killed you 20 times in 5 minutes in 20 different ways.


  • E: Danke zum SO Link, das Licht am Ende des Tunnels ist nah, nur hoffen dass es kein ICE ist :D

    Andosius Ja grad gesehen, ich pruefe das dann mal.



    Edit://


    hmdl Andosius und JiU, lag wirklich am Passwort und den Sonderzeichen, ooh man... lol

    Det blæser en halv pelikan.

    I may look calm. But inside my mind I have killed you 20 times in 5 minutes in 20 different ways.


    Einmal editiert, zuletzt von Aebian ()