Benutzernamen ändern in MediaWiki

Von haus aus lassen sich Benutzernamen im MediaWiki nicht nachträglich ändern. In der Praxis kommt es aber immer wieder vor, dass man sich beim Anlegen vertippt, dass man einen ungewohnten Benutzernamen von einem Admin zugeteilt bekommt, oder dass sich Namenskonventionen ändern und vereinheitlicht werden.

Um den Benutzer zu ändern reicht es nicht einfach aus in der MySQL-Datenbank den Benutzer in der Tabelle user zu ändern. Der Benutzername wird z.B. auch bei jeder Änderung einer Seite aufgezeichnet. Für das MediaWiki gibt es eine Erweiterung Renameuser mit der man dies Benutzernamen ändern kann (ab Version 1.7). Natürlich habe ich das erst entdeckt nachdem ich die Benutzer direkt in der Datenbank geändert habe. Wer auf die Erweiterung verzichten möchte kann es folgendermaßen versuchen:

Sicherheitshalber sollte man immer ein Backup der Datenbank anlegen bevor man irgendwelche manuellen Änderungen daran vornimmt. Die aktuellen Benutzernamen findet man im MediaWiki in der Tabelle user in der Spalte user_name. Am besten verwendet man die Suche in phpMyAdmin und sucht den zu ersetzenden Benutzernamen in der Datenbank, um festzustellen in welchen Tabellen man ändern muss. Dann kann man per SQL-Befehl die alten Benutzer durch die neuen ersetzen. Folgende SQL-Statements haben bei mir (MediaWiki Version 1.11) alle Tabellen abgedeckt und funktioniert:
[source:sql]
update user set user_name = replace(user_name, ‚Alter_user‘, ‚Neuer_user‘);
update logging set log_title = replace(log_title, ‚Alter_user‘, ‚Neuer_user‘);
update page set page_title = replace(page_title, ‚Alter_user‘, ‚Neuer_user‘);
update pagelinks set pl_title = replace(pl_title, ‚Alter_user‘, ‚Neuer_user‘);
update recentchanges set rc_user_text = replace(rc_user_text, ‚Alter_user‘, ‚Neuer_user‘);
update revision set rev_user_text = replace(rev_user_text, ‚Alter_user‘, ‚Neuer_user‘);
[/source]

Die SQL-Befehle kann man ebenfalls über phpMyAdmin absetzen.

One Comment

  1. Chris sagt:

    Danke. Besonders die vorgefertigten SQL-Statements haben mir sehr geholfen. 🙂