Konvertierung von MySql Datenbanken

Grinarn

New Member
Moin Moin,

ich habe folgendes Problem:
Auf einem älteren vServer läuft eine Anwendung zusammen mit einer MySql4 Datenbank, bzw mehreren Datenbanken. In diesen Datenbanken werden auch Passwörter gespeichert.

Nun möchte ich, falls dieser Server einmal ausfällt, eine Notfallumgebung auf einem meiner anderen Server aufbauen. D.h. die Anwendung wird auf dem anderen Server aufgebaut und im Fehlerfall müssen dort nurnoch die aktuellen Datenbankbackups eingespielt werden und der DNS geändert werden.

Leider wurde wohl die Kodierung der Passwörter in den Datenbanken von den Versionen geändert. Das bedeutet für die Anwendung, dass die Passwörter auf dem neuen Server nichtmehr lesbar sind und damit ein Login nichtmehr möglich ist.

Ich müsste also irgendwie die Datenbank vor dem Einspielen auf dem neuen Server von Version 4 auf Version 5 konvertieren, damit die Passwörter auf dem neuen Server brauchbar sind.
Kennt dort vllt. jmd. eine Möglichkeit dies durchzuführen oder hat eine andere Lösung für das Problem?

Ein Update der SQL Version auf dem alten Server von Version 4 auf 5 will ich im Moment vermeiden, da Cheffe im Urlaub ist und wenn die Anwendung dann nichtmehr läuft Holland in Not wäre :-)

Hoffe hier weiss jmd Hilfe

Schöne Grüße
Grinarn
 
Das trifft leider nich ganz mein problem. Das was dort beschrieben ist, betrifft ja den SQL User um sich mit der Datenbank zu verbinden.

Mein Problem sind die Anwendungsuser, die ihr Passwort in der Datenbank abspeichern.
Das Lesen der Datenbank scheint auch zu funktionieren, nur können sich die User nicht einloggen.

Ich füg nochmal hinzu, das mir die Passwörter der User auch nicht bekannt sind. Daher kann ich diese auch nicht einfach ersetzen oder resetten.
 
Last edited by a moderator:
Damit ich/wir das richtig verstehe(n): Es geht um in der Datenbank gespeicherte Passwörter für irgendeine Applikation und nicht um Passwörter für User der mySQL Datenbank?

Wie sind denn die Passwörter verschlüsselt?

--marneus
 
Ja, genau richtig. Die Applikation speichert beim anlegen oder ändern eines Users die Passwörter in der Datenbank.

Wie die verschlüsselt sind, weiss ich nicht genau, denke allerdings das die Anwendung den Mysql password Befehl nutzt. Abgelegt sind die Passwörter als VARCHAR(50).

Allerdings fällt mir auf, das die Hashes der beiden Datenbanken (alter Server und neuer Server) identisch sind.

Nun steh ich wieder bei 0. *kopf tisch*
 
Wichtig wäre erstmal zu erfahren, welche Verschlüsselungsmethode angewandt wird (i.d.R. md5). Wenn Du das verfiziert hast, können wir ja gemeinsam ins Debugging gehen.

Anzuraten wäre, die DB-Queries zu loggen und manuell auszuführen bzw. anzuschauen.

--marneus
 
Einfach mal in die Applikation schauen oder aber den gespeicherten Hash vergleichen von einem User, wo Du das Passwort weißt.

Code:
SELECT md5('dein bekanntes passwort') FROM irgendeine_tabelle;
--marneus
 
Ich habe das mal in der Dokumentation der Anwendung nachgelesen und es sind md5 Hashes die dort gespeichert werden.

Allerdings bekomm ich mit Select md5('meinPasswort') from tabelle andere Hashes, als für meinen User in der Tabelle gespeichert sind.

Auch ein Select * from tabelle where password = md5('meinPasswort');
brachte nicht meinen User.

Das scheint dann wohl auch der Fehler zu sein.
Wie kann ich denn die SQL-Querys mitloggen?
 
Zur Passwortgeschichte: Kann es sein, dass die Applikation an das Passwort noch irgendwas dran hängt oder es anderweitig verändert?

Informationen zum Logging findest Du hier. Lies mal in den Kommentaren nach.

--marneus
 
So, ich hab jetzt das ganze nochmal auf einem dritten Server ausprobiert und dort läuft es bis auf einen kleinen php Fehler einwandfrei. Der Login funktioniert auch, mit den gleich DB Dumps die auf dem anderen Server nicht funktioniert haben.

Auf dem Server, auf dem es nicht funktioniert läuft mysql vers. 5.0.22-0ubuntu6.06.9
Auf dem Server, auf dem es funktioniert läuft mysql vers. 5.0.32-7etch6

Irgendwie kann ich nicht glauben, dass zwischen diesen minimalen Versionen ein Unterschied in der Passwordverarbeitung besteht.

Daher die Frage, was wird denn alles zur generierung des Passworthashes benutzt und warum läuft es au dem einen und auf dem anderen nicht?

Schöne Grüße
Grinarn
 
Hm, solltest mal einen Hash als Beispiel posten (kannst ja ein paar Ziffern verändern), dann sollte man recht leicht erkennen können was für ein Algorithmus benutzt wurde.
md5 ist am gängigsten, denkbar ist aber auch Unix crypt.
 
So, wenn ich per SQL-befehl in der DB einen Hash mit dem richtigen Passwort erzeuge bekomme ich: b6f046bf37d66c84a843d84ece118397

In der Tabelle steht als Passwort Hash: 6DEA3161C6489977234D287B1AF5A3A9F3500D1C

Also 2 völlig verschiedene Werte. Wie gesagt läuft es ja nun GottseiDank auf einem meiner anderen Server, was meinen Chef wohl erstmal zufrieden stellen sollte:rolleyes:
Trotzdem würde ich echt gern dieses Problem verstehen.
 
Back
Top