Passwörter stimmen nach Import nicht mehr
Felix2
- datenbank
Hallo,
ich möchte ein Projekt, das ich auf einem Entwicklungsserver geschrieben habe, auf dem Kundenserver installieren. Auch die Datenbank soll dort importiert werden. In einer Benutzer-Tabelle speichere ich mit decode() verschlüsselte Passwörter.
Nach dem erfolgreichen Import stimmen die Passwörter nicht mehr, was kann hier die Ursache sein?
Der Quellserver hat mysql 4.0.27-max-log, der Zielserver mysql 5.0.67-log.
Es grüßt
Felix2
echo $begrüßung;
ich möchte ein Projekt, das ich auf einem Entwicklungsserver geschrieben habe, auf dem Kundenserver installieren. Auch die Datenbank soll dort importiert werden. In einer Benutzer-Tabelle speichere ich mit decode() verschlüsselte Passwörter.
Nach dem erfolgreichen Import stimmen die Passwörter nicht mehr, was kann hier die Ursache sein?
Bist du sicher, dass nur die Passwörter nicht stimmen? Oder stimmen auch Nicht-ASCII-Zeichen nicht, beispielsweise Umlaute.
Der Quellserver hat mysql 4.0.27-max-log, der Zielserver mysql 5.0.67-log.
DECODE() und ENCODE() haben sich nach meinen Recherchen und Versuchen nicht geändert.
Vermutlich hast du das übliche Problem, dass du beim Exportieren und Importieren nicht auf eine einheitliche Zeichenkodierung geachtet hast.
MySQL hat beim Sprung von 4.0 auf 4.1 sein Zeichenkodierungskonzept überarbeitet und umfangreich erweitert. Du tust dir keinen Gefallen, wenn du mit Versionen vor 4.1 und gleich oder größer 4.1 gleichzeitig hantierst. Die wichtigsten beiden Punkte in Kürze sind die Kodierungsangaben der einzelnen Felder und die der Verbindung zwischen Client und Server, welche nach jedem Connect auszuhandeln ist.
Die binären Daten der ENCODE()-Funktion laufen immer Gefahr, wenn du einen Text-Feldtyp verwendest, als Zeichen in Zusammenhang mit einer Kodierungsangabe missinterpretiert zu werden. Am einfachsten wird es sein, du stellst das Feld auf einen der BLOB-Typen um (z.B. TINYBLOB) und exportierst mit einer aktuellen Version von phpMyAdmin, dann bekommst du eine eindeutige Darstellung der Werte als Hexdump. Vergleiche am besten außerdem einen der Werte mit der Darstellung von SELECT HEX(ENCODE('der_wert', 'dein_schlüssel'))
echo "$verabschiedung $name";
Hi,
Nach dem erfolgreichen Import stimmen die Passwörter nicht mehr, was kann hier die Ursache sein?
Der Quellserver hat mysql 4.0.27-max-log, der Zielserver mysql 5.0.67-log.
In Version 4.1 (also zwischen Deinen zwei Versionen) wurde das Format der Paßwörter geändert.
cu,
Andreas
echo $begrüßung;
In Version 4.1 (also zwischen Deinen zwei Versionen) wurde das Format der Paßwörter geändert.
Diese Passwörter (zum Anmelden der Clients am DBMS) kann er nicht gemeint haben, wenn er DECODE() erwähnt, denn damit werden diese Passwörter nicht behandelt. Außerdem werden für das Speichern der Anmeldepasswörter nur die Zeichen 0-9A-F* verwendet und da muss man sich schon sehr ungeschickt anstellen, um sie bei einem Export-Import zu verändern. Obendrein kann man problemlos in den neueren Versionen die im alten Format gespeicherten Passwörter verwenden. Anzuraten ist jedoch, das neue Format zu verwenden.
echo "$verabschiedung $name";