MySQL root Passwort zurücksetzen

Eine gute Dokumentation der IT ist Gold wert. Doch was, wenn man das MySQL Passwort des “root” Benutzers nicht mehr weiß und dieses nicht dokumentiert hat? Oder ein Mitarbeiter verlässt das Unternehmen und es wurde keine richtige Übergabe gemacht?

Eine gute Dokumentation der IT ist Gold wert.
Doch was, wenn man das MySQL Passwort des “root” Benutzers nicht mehr weiß und dieses nicht dokumentiert hat?
Oder ein Mitarbeiter verlässt das Unternehmen und es wurde keine richtige Übergabe gemacht?

In diesem Fall laufen zwar zunächst die Anwendungen nach wie vor weiter.
Jedoch sind Änderungen und Anpassungen im Laufe der Zeit notwendig, die root Rechte an der Datenbank erfordern.

Bevor man jedoch das Passwort zurücksetzt, ist es einen Versuch wert, das Passwort in Konfigurationsdateien zu suchen. Aus Sicherheitsgründen sollte man zwar einen eigenen Benutzer Account für jede Anwendung anlegen und die Rechte einschränken, oftmals wird dies aus Bequemlichkeit jedoch schlichtweg nicht gemacht.

So sind die root Passworte häufig in den Konfigurationsdateien der jeweiligen Anwendungen wie z.B. Wiki, PhpMyAdmin, Plesk usw. zu finden.

Auch die Datenbanksicherung ist ein guter Anlaufpunkt. Auch hier besteht die Möglichkeit, dass in den Scripten der root Account hinterlegt ist. Die “geplanten Tasks” unter Windows oder der “Cron Deamon” unter Linux starten oftmals diese Sicherungsscripte.

Wenn alle Stricke reißen, besteh jedoch immer noch die Möglichkeit, das Passwort neu zu setzen.

Hierfür benötigen Sie Zugriff auf den eigentlichen Server, auf dem die MySQL Datenbank läuft.

Stoppen Sie zunächst die laufende Datenbank.

/etc/init.d/mysqld stop

Aus Sicherheitsgründen sollten Sie immer Sicherung der Datenbank anlegen, so dass Sie schnell den Ursprungszustand wiederherstellen können:

cp -a /var/lib/mysql /var/lib/mysql-sicherung

Legen Sie nun eine Datei /tmp/mysqlrootpassword mit folgendem Inhalt an:

UPDATE mysql.user SET Password=PASSWORD('12345') WHERE User='root';
FLUSH PRIVILEGES
;

Die “12345″ steht in diesem Fall für Ihr neues root Passwort.

Achten Sie darauf, dass die Datei vom MySQL Benutzer gelesen werden kann.

Nun wird die Datenbank gestartet und das SQL Script ausgeführt, das das root Passwort neu gesetzt.

mysqld_safe --init-file=/tmp/mysqlrootpassword &

Löschen Sie nun aus Sicherheitsgründen wieder die Datei /tmp/mysqlrootpassword.

Sie können nun wieder wie gehabt die Datenbank über das Initscript Starten und Stoppen.

Spätestens jetzt bietet es sich an, das root Passwort sicher zu notieren. Am besten klassisch zu den wichtigen Akten im Tresor oder in einer verschlüsselten Datei.

Alternativ können Sie auch auf die selbe Methode einen zweiten Benutzer anlegen, der alle Berechtigungen auf die MySQL Datenbank bekommt.

Der entsprechende SQL Befehl lautet:

GRANT ALL PRIVILEGES ON *.* TO ‘admin’@'%’ IDENTIFIED BY ‘password’ WITH GRANT OPTION;