MySQL 5.1 verwendet ein Authentifizierungsprotokoll, das auf einem Passwort-Hash-Algorithmus basiert, der mit älteren Clients (vor Version 4.1) inkompatibel ist. Wenn Sie den Server von 4.1 auf die neue Version aufrüsten, können Verbindungsversuche mit einem älteren Client folgenden Fehler verursachen:
shell> mysql
Client does not support authentication protocol requested
by Server; consider upgrading MySQL client
Für dieses Problem gibt es folgende Lösungsansätze:
Sie aktualisieren alle Clientprogramme, sodass sie die Clientbibliothek von 4.1.1 oder eine neuere Version benutzen.
Wenn Sie mit einem Clientprogramm einer Version vor 4.1 auf den Server zugreifen, verwenden Sie ein Konto, das noch ein Passwort aus der Zeit von vor 4.1 hat.
Stellen Sie das Passwort für Benutzer, die ein älteres
Clientprogramm als 4.1 verwenden, im Stil der Version von
vor 4.1 ein. Dies können Sie mit der SET
PASSWORD
-Anweisung oder der
OLD_PASSWORD()
-Funktion tun:
mysql>SET PASSWORD FOR
->'
some_user
'@'some_host
' = OLD_PASSWORD('newpwd
');
Alternativ können Sie auch UPDATE
und
FLUSH PRIVILEGES
einsetzen:
mysql>UPDATE mysql.user SET Password = OLD_PASSWORD('
->newpwd
')WHERE Host = '
mysql>some_host
' AND User = 'some_user
';FLUSH PRIVILEGES;
In diesen Beispielen müssen Sie
„newpwd
“ durch das
neue, von Ihnen gewählte Passwort ersetzen. Da MySQL Ihnen
das Originalpasswort nicht verraten kann, müssen Sie ein
neues aussuchen.
Veranlassen Sie den Server, den älteren Passwort-Hashing-Algorithmus zu verwenden:
Starten Sie mysqld mit der Option
--old-passwords
.
Weisen Sie jedem Konto, dessen Passwort auf das längere 4.1-Fomat umgestellt wurde, ein Passwort im alten Format zu. Welche Konten das sind, verrät Ihnen folgende Anfrage:
mysql>SELECT Host, User, Password FROM mysql.user
->WHERE LENGTH(Password) > 16;
Für jeden Konteneintrag, den der Server zeigt, nehmen
Sie die Werte Host
und
User
und weisen mit der Funktion
OLD_PASSWORD()
und SET
PASSWORD
oder UPDATE
ein
neues Passwort zu, wie oben beschrieben.
Hinweis: In älteren
PHP-Versionen unterstützt die
mysql
-Erweiterung nicht das
Authentifizierungsprotokoll von MySQL 4.1.1 und höher. Das gilt
unabhängig von der verwendeten PHP-Version. Wenn Sie die
mysql
-Erweiterung mit MySQL 4.1 oder höher
nutzen möchten, müssen Sie unter Umständen einen der oben
beschriebenen Wege einschlagen, um MySQL für ältere Clients zu
konfigurieren. Die mysqli
-Erweiterung (die in
PHP 5 für "MySQL, Improved" steht) ist kompatibel mit dem
verbesserten Passwort-Hashing von MySQL 4.1 und höher. Hier ist
keine spezielle Konfiguration für MySQL erforderlich, um diese
MySQL-Clientbibliothek nutzen zu können. Weitere Informationen
über die mysqli
-Erweiterung finden Sie unter
http://php.net/mysqli.
Unter Umständen kann auch die ältere
mysql
-Erweiterung mit der neuen
MySQL-Clientbibliothek kompiliert werden. Dieser Vorgang ist
jedoch nicht Thema unseres Referenzhandbuchs. Weitere
Informationen finden Sie in der PHP-Dokumentation. Eventuell
können Sie in solchen Fragen auch im
MySQL with PHP
forum Hilfe finden.
Hintergrundinformationen über Passwort-Hashing und Authentifizierung gibt es unter Abschnitt 5.8.9, „Kennwort-Hashing ab MySQL 4.1“.
Dies ist eine Übersetzung des MySQL-Referenzhandbuchs, das sich auf dev.mysql.com befindet. Das ursprüngliche Referenzhandbuch ist auf Englisch, und diese Übersetzung ist nicht notwendigerweise so aktuell wie die englische Ausgabe. Das vorliegende deutschsprachige Handbuch behandelt MySQL bis zur Version 5.1.