phpmyadmin zeigt kein Schema an

phpmyadmin zeigt kein Schema an

Ich habe einen Server mit einer großen Anzahl von MySQL-Datenbanken. Seit kurzem werden einige der Schemata nicht mehr angezeigt, wenn ich als Root angemeldet bin.

Root-Benutzer - bisher immer verwendet

Wenn ich mich mit den Anmeldedaten für diese bestimmte Datenbank anmelde, kann ich sie sehen.

direkter Benutzer

Der „Eigentümer“ dieser Datenbank ist root, aber andere Datenbanken, die für root ebenfalls nicht sichtbar sind, gehören anderen.

Es scheint, als würden Datenbanken verschwinden, auf die wir kürzlich zugegriffen und an denen wir gearbeitet haben, aber mittlerweile sind mehr als 5 davon nicht mehr sichtbar. Es handelt sich nicht um einen lokalen Cache und jeder, der sich auch als Root anmeldet, hat dasselbe Problem.

Antwort1

Wenn deinCURRENT_USER()nicht angezeigt wird root@localhost, verfügen Sie nicht über Root-Berechtigungen und können sich daher nicht verbinden.

Um zu sehen, welche Berechtigungen Sie tatsächlich haben, nachdem Sie eine Verbindung hergestellt haben, führen Sie Folgendes aus

SHOW GRANTS;

Wenn Sie eine Verbindung zu einer bestimmten Datenbank herstellen, sollten Sie sehen können

  • die Tabellen dieser Datenbank
  • Metadaten im INFORMATION_SCHEMA für genau diese Datenbank

Nehmen wir zum Beispiel an, Sie haben eine Verbindung zu buyspace_systdb hergestellt

Die Ausgabe vonSHOW GRANTS;würde höchstwahrscheinlich ungefähr so ​​aussehen

GRANT USAGE ON *.* ...
GRANT ALL PRIVILEGES ON buyspace_systdb.* TO ...

Der Benutzer root@localhostwürde funktionieren, wenn Sie sich von diesem lokalen Server aus anmelden. Wenn Sie sich remote anmelden, root@localhostwürde dies nicht zulassenBENUTZER()zur Authentifizierung alsCURRENT_USER(). Der Beweis hierfür ist in der ersten Anzeige in Ihrer Frage zu finden. Beachten Sie, dass Sie nur information_schema sehen können. Es wird praktisch leer sein, mit Ausnahme von information_schema.schemata, das 1 oder 2 Einträge enthalten würde. Wenn es root@'%'in vorhanden wäre mysql.userund dieselben Berechtigungen wie hätte root@localhost, wäre es erlaubt, alles wie zu sehen root@localhost.

MySQL verfügt über ein Authentifizierungsschema, das einen Abwärtsspiraleffekt hat. Wenn der Benutzer, mit dem Sie eine Verbindung herstellen möchten, nicht existiert, werden Benutzernamen versucht, die vager sind (Platzhalter oder eingeschränkte Berechtigungen zulassen). Siehe meinen DBA StackExchange-BeitragMySQL-Fehler: Zugriff für Benutzer „a“@„localhost“ verweigert (mit Passwort: JA) für weitere Einzelheiten hierzu.

Endeffekt: Sie können keine Verbindung root@localhostvon einem Remotestandort aus herstellen

verwandte Informationen