Moin!
Deine Aussage ist fehlerhaft.
Glaub ich nicht. :-)
Ich hatte eine Frage gestellt. Seit wann verwendet MySQL Verschlüsselung und erfordert daher einen neuen Client?
Seit es Accounts in MySQL gibt.
Die Passwörter werden mit der PASSWORD()-Funktion verschlüsselt in der Usertabelle der "mysql"-Datenbank abgelegt. Diese Funktion hat sich verändert, erzeugt jetzt längere Hashwerte. Und an der Stringlänge erkennt MySQL, welches Verfahren verwendet wurde.
Offensichtlich ist auch der MySQL-Client für das Hashen des Passwortes mit verantwortlich - weshalb nicht nur die Serverversion, sondern auch die Version der Client-Bibliothek wichtig ist, da alte Clients nichts von der neuen Hashmethode wissen.
Die Fehlermeldung ist da ziemlich eindeutig. Mag sein, dass noch andere Probleme dahinterstecken können, aber da nicht bekannt ist, ob und wie 1&1 seine Server betreibt (die verlinkte Seite gibt zahlreiche Hinweise, wie das alte Verfahren beizubehalten ist), ist die offensichtliche Fehlermeldung eben zuallererst der Ansatzpunkt.
Das man mittels einfacher Verwendung von PHP5 (mit dem neuen Client) anstelle von PHP4 (mit dem alten Client) das Problem ohne Neukompilation vom Tisch bekommt bei 1&1-Accounts, war die für den OP wesentliche Aussage. Manuel wird kaum Zugriff auf die Konfiguration der PHP-Version bei 1&1 haben.
Richtig, aber er hat Zugriff auf seine Datenbank. Dort kann man (vgl. die verlinkte Seite) dem Useraccount auch ein altes Passwort geben, welches dann mit dem alten Client auch funktioniert.
Selbstverständlich kann man auch bei PHP4 den Client für MySQL austauschen. Das erfordert aber einigen Aufwand und außerdem geeigneten Zugriff auf den Server.
Das war ja auch nicht meine Aussage. Meine Aussage war: Es ist das Client-Problem, und für dessen Behebung gibt es viele Ansatzpunkte - siehe Doku.
Du könntest die notwendigen Schritte allerdings gerne mal hier darlegen.
Dafür wäre ich Dir dankbar. Der Thread würde dann bestimmt oft gelesen werden.
Ich habe die Manual-Page zu MySQL verlinkt - da steht alles drin, was man wissen muß.
Allerdings entgeht mir momentan der Grund dafür, warum man dann nicht gleich von PHP 4.x auf PHP 5.1 ff updaten sollte. Gibt es noch eine Distribution von PHP 5.1 ff, die den alten MySQL-Client verwendet?
PHP und MySQL sind nicht fest miteinander gekoppelt. Die Versionsnummern "4" und "5" sind nur zufällig identisch.
Wenn man sich PHP kompiliert, dann wird zu diesem Zeitpunkt die aktuell vorhandene MySQL-Client-Bibliothek eingebunden. Wenn man sich also PHP 5 kompiliert, aber aus irgendeinem Grund noch MySQL 3.23 installiert hat, dann kriegt man mit Sicherheit nur den alten Client eingebunden. Ein späteres Update auf MySQL 4.1 oder 5 würde daran erstmal nichts ändern, sondern führt zu dem aufgetretenen Fehler - allerdings nur bei Accounts, die unter der neuen Datenbankumgebung neu angelegt wurden. Die alten Accounts, die einfach in die neue Version migriert wurden, behalten dabei natürlich ihren alten Passwort-Hash und werden dadurch nicht inkompatibel. Allerdings gilt das nur bis zum nächsten Ändern des Passwortes dieser Accounts.
Dieses Szenario gilt auch für alle sonstigen, vorgefertigten PHP-Pakete, die eine feste Kombination aus PHP und MySQL-Client mitbringen. Wenn man sich beispielsweise XAMPP installiert, aber auf eine anderswo untergebrachte MySQL-Datenbank zugreifen will, dann können Client- und Serverversion ebenfalls unpassend sein.
- Sven Rautenberg
"Love your nation - respect the others."