Es folgt ein recht alter Hut. Mir ist nur gerade mal aufgefallen, das ich den folgenden Weg MySQL Zugänge anzulegen, wenn man die Zugangsdaten eines MySQL Servers vergessen oder versehentlich gelöscht hat, noch nie hier niedergeschrieben habe.

Es geht im großenn und ganzen darum, das man zunächst den MySQL Daemon beendet, ohne Zugangstabellen zu laden wieder startet, den gewünschten Zugang anlegt und nach einem Neustart des Daemons, dieses Mal mit Zugangstabellen, diesen User dann für die weiteren Schritte verwenden kann.

Zunächst ein kurzer Sicherheitshinweis: Für die folgenden Schritte empfiehlt es sich den MySQL Daemon nur von localhost/127.0.0.1 erreichbar zu machen, da für einen kurzen Zeitraum jedermann ohne Passwort administrativ auf den Server connecten kann. Um ganz sicher zu gehen, kann man auch noch einen anderen Port wählen um lokalen Schabernack zu unterbinden.

Das Vorgehen ist wie folgt:

  1. Beenden des MySQL Daemons
  2. Starten des MySQL Daemons ohne Zugriffstabellen:
    mysqld_safe --skip-grant-tables &
  3. Nun kann sich root ohne Passwort in die Datenbank "mysql" einloggen:
    mysql -uroot mysql
  4. Passwort neu setzen:
    UPDATE user SET password=PASSWORD("abcd") WHERE user="root";
    Das neue Passwort wäre nun "abcd". Es kann natürlich gesetzt werden wie immer es sein soll.
  5. (Optional) Zugriffsrechte neu einlesen:
    FLUSH PRIVILEGES;
  6. Da man sich immernoch ohne Passwort einloggen kann, sind alle mysql Prozesse zu beenden; notfalls zu killen (nur, wenn das init Script es per "stop" nicht schafft alles was MySQL ist zu beenden). Besonders gilt das für die mysql_safe Instanz (prüfen ob noch was läuft per "ps waux | grep -i mysql").
  7. Abschliessend MySQL wieder ganz normal starten.

Man hat so das Passwort des Users "root" wieder auf den in Punkt 4 verwendeten Wert gesetzt. Da dieses ja _der_ administrative User ist, können alle weiteren Korrekturen im ganz normalen, sicherem MySQL Kontext behoben werden.
Wenn man einen anderen User als "root" für seine administrativen Arbeiten verwendet, muss man selbstverständlich diesen in Punkt 3 und 4 statt "root" verwenden.

Teilen per: TwitterEmail


Comments

comments powered by Disqus