Wie ich jüngst in einem Kundenprojekt erfahren musste, hat sich der Rückgabewert der MySQL Funktion PASSWORD() verändert. Das ist durch einen Serverumzug aufgefallen und schloss alle Nutzer von ihren Accounts aus.
MySQL beschreibt selber in ihren Manuals, dass die Funktion PASSWORD() nur für Passwörter der Nutzer das DB-Systems dienen sollte und stattdessen auf SHA1() oder MD5() zurückgegriffen werden soll. Also merke: niemals für Nutzerauthorisierungen die Funktion PASSWORD() verwenden. Seit Version 4.1 wurde dort auf einen längeren Hash-Wert umgestellt. Allerdings gibt es Konfigurationseinstellungen oder die mögliche Anzahl Zeichen des PASSWORD() Feldes, die den DB-Server erneut die alten kurzen Passwörter bringen lassen.
Ein Ansatz, um die nun falschen Passwörter aktualisieren zu können gibt es mit Hilfe der Funktion OLD_PASSWORD() und wenn die Autorisierung klappt, dann lieber mit dem sicheren MD5() arbeiten oder eine ganz eigene Verschlüsselung der Daten vornehmen.