WordPress Benutzerrolle in Datenbank ändern

Unter manchen Umständen kann es vorkommen, dass man keinen Zugang (mehr) zum WordPress Adminbereich hat, weil der eigene Account nicht über die nötigen Adminrechte verfügt.

So findest du den Benutzerrolleneintrag in der Datenbank

Wenn man aber Zugriff auf die Datenbank hat, etwa über seinen Hoster im Adminbereich phpMyAdmin starten kann, dann kann man die User Zugriffsrechte direkt in der Datenbank einstellen.

Die Benutzerrollen sind gespeichert in der wp_usermeta Datenbanktabelle mit dem meta_key wp_capabilities. Falls Deine WordPress Installation ein anderes Datenbank Prefix hat, kann die Tabelle auch anders heissen, etwa xxx_usermeta.

WordPress User ID herausfinden

Um die Rolle für den gewünschten Benutzer ändern zu können, brauchst Du zuerst einmal die ID des Users. Die solltest Du in der Tabelle wp_users finden.

Sind dort sehr viele User eingetragen, kannst du deinen User nach einer Suche per SOL Befehl ausfindig machen. Um einen SQL Befehl eingeben zu können, musst du im Menü oben auf SQL klicken.

WordPress Benutzerrolle in Datenbank ändern

Dann kommt ein Textfeld in das du den Befehl schreiben kannst. Zum abschicken musst Du unten rechts auf OK klicken.

So suchst Du nach dem Benutzer, wenn Du seine E-Mail kennst:

SELECT * FROM `wp_users` WHERE `user_email` = `deineemail@domain.de`

Oder wenn du nur den Namen oder nur einen Teil des Namens hast, kannst du diesen SQL Befehl verwenden. Beachte dass du den Namen an drei Stellen eintragen musst:

SELECT * FROM `wp_users` 
WHERE user_login LIKE '%franz%' OR user_nicename LIKE '%franz%' OR display_name LIKE '%franz%'
WordPress Benutzerrolle in Datenbank ändern

Aus der Spalte ID erkennst du nun, welche ID der User hat.

User Meta Einträge eines WordPress Benutzers finden

Die bekannte User ID kannst Du nun einsetzen, um die user_meta Einträge des Users zu finden:

SELECT * FROM `wp_usermeta` WHERE user_id = 1

WordPress Benutzerrolle in Datenbank ändern
Benutzerrolleneintrag wp_capabiliteis in wp_usermeta

So machst Du einen User zum Administrator via phpMyAdmin

In phpMyAdmin lässt sich die Rolle per Doppeklick auf den bisherigen Eintrag mit dem meta_key wp_capabilites ändern. a:1:{s:13:"administrator";b:1;} muss in der Spalte meta_value stehen, damit der User Adminrechte hat.

Falls Du dich fragst, warum dort nicht einfach nur „administrator“ steht, sondern diese kryptische Zeichenkette mit „a:1:{…“, hier die Erklärung: Der Wert, der hier eingetragen ist, ist als serialisierter Dateneintrag gespeichert. Das ist so, weil ein Benutzer prinzipiell auch mehrere Rollen innehaben kann. Der Wert ist also in PHP ein Array. Das wiederum wird serialisiert als Zeichenkette und sieht dann eben so aus.

Achtung: Du kannst nicht einfach nur den Rollennamen austauschen. Du musst auch die Zeichenanzahl hinter dem „s“ anpassen. Ansonsten ist der Eintrag ungültig und der User hat womöglich überhaupt keine Rolle mehr. Weil das recht mühsam ist, nachfolgend noch die korrekten Einträge für die üblichen Userrollen.

Einträge für unterschiedliche Nutzerrollen

Der Eintrag ist in der Form von serialisierten Daten eingetragen. Deswegen kann man nicht einfach nur z. B. subscriber durch administrator ersetzen. Dann würde das Format nicht mehr stimmen.

Untenstehend findest Du die jeweiligen Einträge für die Standardrollen in WordPress:

Abonnent (Subscriber)

a:1{s:10:"subscriber";b:1;}

Mitarbeiter (Contributor)

a:1:{s:11:"contributor";b:1;}

Autor (Author)

a:1:{s:6:"author";b:1;}

Redakteur (Editor)

a:1:{s:6:"editor";b:1;}

Administrator

a:1:{s:13:"administrator";b:1;}

Benutzerrolle per SQL ändern

Du kannst die Rolle auch mit einem SQL-Befehl ändern, das würde so gehen für den Benutzer mit der ID 12:

UPDATE wp_usermeta 
SET meta_value='a:1:{s:13:"administrator";b:1;}' 
WHERE user_id=12 AND meta_key='wp_capabilities'