SELECT * FROM // c[_]~~

Avatar

ein IT-Blog, mehr nicht!

WordPress: Du hast nicht ausreichend Rechte, um auf diese Seite zuzugreifen.

Die Fehlermeldung “Du hast nicht ausreichend Rechte, um auf diese Seite zuzugreifen.” ärgerte mich heute Vormittag ein wenig, nachdem ich einen WordPress-Blog ein wenig umstrukturiert hatte. Aber von vorn:

Auf meinem Webspace liegen zur Zeit zwei Blogs in unterschiedlichen Verzeichnissen mit unterschiedlichen Datenbanktabellen. Beim anlegen der beiden Blogs habe ich nicht wirklich auf eine eindeutige Struktur geachtet, was zur Folge hatte, dass Blog #1 im Verzeichnis ‘/blog‘ lag und den Tabellen-Präfix ‘wp_‘ nutze und #2 mit dem Präfix ‘blog_‘ konfiguriert war und im Verzeichnis ‘/wp‘ lag. Dieser Zustand war etwas verwirrend (verständlicher Weise), gerade wenn es darum ging ein Plugin anzupassen oder DB-Tabellen aufzuräumen. Außerdem konnte ich immer nicht richtig zuordnen um welches Blog es sich bei dem entsprechende Verzeichnis handelte. Also kurzerhand die Verzeichnisse entsprechend der Domain umbenannt und die Domain-Weiterleitungen angepasst. - Kein Problem bis dahin. - Anschließend noch einen aussagekräftigen Präfix für die Tabellen vergeben, die Datenbank und die Datei config.php des jeweiligen Blogs angepasst. - Auch kein Problem, zumindest kein offensichtliches.

Bis ich mich wieder ins Backend einloggen wollte und mich die o.g. Fehlermeldung anlachte! Ein Blick in die Datenbank, genauer in die Tabellen new_usermeta bzw. new_options sorgte aber glücklicherweise relativ schnell für Aufklärung (new_ für das neue Präfix, welches real natürlich nicht ‘new’ heißt). Das Attribut meta_key (new_usermeta) bzw. option_name (new_options) enthielten Werte die noch mit dem alten Tabellen-Präfix bestückt waren und ich bei meinen Änderungen nicht berücksichtigte. Mit Hilfe der zwei folgenden Abfragen lassen sich die Werte schnell herausfiltern.

SELECT * FROM new_options WHERE option_name LIKE 'old_%';

bzw.

SELECT * FROM new_usermeta WHERE meta_key LIKE 'old_%';

Diese können nun händisch angepasst werden. Oder als Alternative kann man, etwas komfortabler, die folgende Query verwenden.

UPDATE new_options SET option_name = REPLACE(option_name, 'old_', 'new_');

bzw.

UPDATE new_usermeta SET meta_key = REPLACE(meta_key, 'old_', 'new_');

Nach dem Update klappt es dann auch wieder mit dem Einloggen in WordPress.
Hinweis: Vor der Änderung unbedingt die Datenbank sichern, falls irgend etwas gegen den Baum läuft…

Jan Häußler Von >>
Abgelegt unter >>
Tags >>
  • insgesamt: 2039 //   heute: 8 //   zuletzt: 21. August 2008
Gelesen >>
23 Comments, Comment or Ping
  1. Florian Horváth

    Danke!

  2. Gern geschehen!

  3. Hallo Jan,

    ich hatte auch meine Präfixe umgenannt. Anfangs lief noch alles super, bis ich die o.g. Meldung erhielt. Da ich gerade nicht zu Hause bin, kann ich es auch noch nicht testen, aber vom Ansatz her scheint es logisch zu sein.

    Ich werde heute Abend mal testen und mich dann noch mal melden. Erst mal vielen Dank für die Info!

    Burkhard

  4. So testet und berichtet :)

  5. Hallo Jan,

    kannst Du mir bitt noch etwas auf die Sprünge helfen? Ich hatte gestern das Präfix der DB-Tabellen angepasst. Die wp-config.php habe ich natürlich auch angepasst. Die Präfixe hießen vorher wp_bu_01_ und ich habe sie in wp_bww_ umbenannt. Alle Zugriffe passen, nur das ich mich als Admin nicht mehr einloggen kann.

    Ich kann Dir bzgl new_usermeta und new_options nicht folgen. Bei mir gibt es logischerweise wp_bww_usermeta und wp_bww_options.

    Wo genau muss ich eingreifen? Die Datenbanken verwalte ich mit phpMyAdmin.

    Danke!
    Burkhard

  6. Jetzt muss ich doch glatt meinen eigenen Post nochmal lesen :) Also probiere mal folgendens. (Bitte mit einem DB-update vorher, damit du zur Not das wieder einspielen kannst.)

    UPDATE wp_bww_options SET option_name = REPLACE(option_name, ‘wp_bu_01_’, ‘wp_bww_’);

    und

    UPDATE wp_bww_usermeta SET meta_key = REPLACE(meta_key, ‘wp_bu_01_’, ‘wp_bww_’);

    Das sind die obigen Statements auf deine Tabellenstruktur angepasst. Wenn es erfolgreich ist, sollt dir eine Anzahl x von geänderten Einträge gemeldet werden und das Login wieder funktionieren.

  7. Hallo Jan,

    danke für Deine schnelle Antwort! Leider ohne Erfolg. Nach dem Ausführen des Befehls bekomme ich die Meldung: Betroffene Datensätze: 0 (die Abfrage dauerte 0.0003 sek). Anschließend ist alles wie gehabt :-(

    Mein Problem u.a.: was genau passt i.d. Tabelle nicht? Kann ich das auch “per Hand” editieren? Ich weiß immer gerne was ich mache! Mit SQL kenne ich mich leider nur wenig aus.

    Vielen Dank!
    Burkhard

    PS: Du hattest anfangs geschrieben, dass Du beim Blick in die Datenbank das Problem sofort erkannt hattest. Hattest Du die fehlerhafte Stelle gesehen (dann will ich sie auch gerne sehen!) oder hattest Du beim Blick in die Datenbank nur die Idee, dass hier prinzipiell das Problem liegen müsste?

  8. Guten Morgen,

    das Problem bei WP ist, dass die Optionen (Datensätze in der Tabelle wp_options) und ein paar Userdaten (Datensätze in der Tabelle wp_usermeta) samt dem vergebenen Präfix bei der Installation angelegt werden. Benennst du deine Tabellen um, tritt o.g. Problem auf, insbesondere wenn die Tabelle wp_usermeta beim Einloggen abgefragt wird und Datensätze mit wp_* gesucht, aber nicht gefunden werden. Warum einige Datensätze jetzt mit dem Tabellepräfix vergeben sind, kann ich dir auch nicht genau sagen, dazu müsste man im WP-Core rumwühlen aber das für die Lösung meines Problems nicht notwendig.

    Durchsuche deine Tabellen mal nach Datensätze die mit deinem alten Präfix anfangen (wp_bu_01_), dazu kannst du die ersten beiden Abfrage verwenden (oder die Tabellen manuell durchblättern ;):

    SELECT * FROM wp_bww_options WHERE option_name LIKE ‘wp_bu_01_%’;
    SELECT * FROM wp_bww_usermeta WHERE meta_key LIKE ‘wp_bu_01_%’;

    (einzeln ausführen)
    Werden damit Daten gefunden, kannst du sie auch manuell editiert. Wirst du nicht fündig… öhm. Tja warten wirs mal ab :D

  9. Hallo Jan,

    danke für Deinen “vollen Einsatz”!!! Es war mein Fehler (diese Feststellung trifft man ja leider oft nach vergeblichen Maßnahmen). Ich hatte Die das falsche Präfix genannt. Bisher hieß das Präfix “wp_bu02″ und nicht “wp_bu_01″. Daher konnte der Befehl auch keine Daten ändern :-(

    Ich hatte die Datensätze exportiert und mir dann mit einem Editor durchsucht. Dabei kam es dann zu Tage. Da ich gerade nicht auf meine Datenbanken zugreifen kann, kann ich es erst heute Abend testen - ich vermute, dass es dann funzt. Noch eine Frage: Kann ich die SQL-DB mit einem normalen Texteditor editieren und dann wieder importieren? Oder muss dabei etwas beachtet werden?

    Danke!!!

  10. … es funzt! Danke!

  11. Freut mich! Gern geschehen.

  12. JayL

    DANKE für den Post, er hat mit den Abend gerettet!

  13. DANKE DANKE DANKE!
    :D

  14. Jan

    Immer wieder gern! ;)

  15. Jan, Du rockst!

  16. Herzlichen Dank für die Lösung - danach gesucht, hier gefunden!

  17. Vielen Dank, du hast mir den Tag gerettet!!! :-)

  18. Vielen Dank! Die Anleitung war sehr hilfreich!

  19. Hey Jan,

    hat sofort geklappt - DANKE!

    Finde es immernoch ‘n bissle umständlich wenn man von der offline- zur online-DB hin und her exportiert.

    Weiter so.

    Gruß

Reply to “WordPress: Du hast nicht ausreichend Rechte, um auf diese Seite zuzugreifen.”

Suche