MySQL Kennwörter mit alten kurzem Hash finden und neu setzen

Seit einem der letzen Updates von MySQL und PhpMyAdmin funktionierte bei mir der Login in PhpMyAdmin für einige User nicht mehr. Der Grund hierfür war, dass der Passwort-Hash für einige ältere Benutzer noch 16 statt 41 Zeichen lang war. Das wird jetzt so nicht mehr unterstützt. Also müssen die Passwörter neu gesetzt werden bzw. die Hashes neu generiert werden.
Um rauszufinden, welche User aktualisiert werden müssen, ist folgendes SQL-Statement hilfreich:

SELECT `User`, `Host`, Length(`Password`) FROM mysql.user where Length(`Password`)<41;

Als Ergebnis bekommt man dann sowas:

+----------+-----------------+--------------------+
| User     | Host            | Length(`Password`) |
+----------+-----------------+--------------------+
| foouser  | localhost       |                 16 |
| baruser  | %               |                 16 |
| baruser  | localhost       |                 16 |
| danger   | 192.168.0.110   |                  0 |
+----------+-----------------+--------------------+

Es müssen also insgesamt vier Passwörter neu gesetzt werden. Wobei man hier gleich schön sehen kann, dass der User danger gar kein Passwort hat sondern nur anhand der IP authentifiziert. Sowas soll man natürlich auf keinen Fall machen (IP-Spoofing) und kann bei der Gelegenheit dem User gleich ein Passwort verpassen.

Man kann sich jetzt entscheiden, ob man einfach neue Passwörter nimmt oder ob man die alten wieder nimmt. So oder so: Aus der Datenbank kann man sie nicht entnehmen sondern muss für jeden einzelnen User das Passwort neu setzen. Das macht man mit:

SET PASSWORD FOR 'baruser'@'%'=PASSWORD('Neues tolles Passwort');FLUSH PRIVILEGES;

Dabei natürlich beachten, dass User auch für mehrere unterschiedliche Hosts anders angelegt sein könnten.

Tags » , , «

Autor:
Datum: Freitag, 20. Dezember 2013 15:57
Trackback: Trackback-URL Themengebiet: Privater Kram

Feed zum Beitrag: RSS 2.0 Diesen Artikel kommentieren

Kommentar abgeben

*