phpmyadmin zeigt kein Schema an

2

Ich habe einen Server mit einer großen Anzahl von MySQL-Datenbanken. In letzter Zeit werden einige der Schemas nicht mehr angezeigt, wenn Sie als Root angemeldet sind.

root user - bisher immer verwendet

Wenn ich das Login für diese bestimmte Datenbank verwende, kann ich es sehen.

direkter Benutzer

Der 'Besitzer' dieser Datenbank ist root, aber andere, die für root ebenfalls nicht sichtbar sind, gehören anderen.

Es scheinen Datenbanken zu sein, auf die wir in letzter Zeit zugegriffen haben und an denen wir gearbeitet haben, die verschwinden, aber es gibt jetzt mehr als fünf, die nicht sichtbar sind. Es ist kein lokaler Cache und jeder, der auch das Root-Login verwendet, hat das gleiche Problem.

TomFirth
quelle
nur ohne Kommentar abstimmen? Jeder Rat wäre gut.
TomFirth
(HAFTUNGSAUSSCHLUSS: Keine phpmyadmin-Person) Führen Sie die folgende Abfrage aus: SELECT USER() AttemptedToConnectAsUser,CURRENT_USER() AllowedToConnectAsUser;Was ist die Ausgabe ???
RolandoMySQLDBA
AttemptedToConnectAsUser AllowedToConnectAsUser cpses _ ******** @ localhost cpses _ ******** @ localhost Ich bin ziemlich unerfahren mit phpmyadmin. Ich gehe davon aus, dass dies zufällig generiert wurde. Sollte dies jedoch als 'root @ localhost' angezeigt werden. ?
TomFirth
Es wird überhaupt nicht zufällig generiert. Weitere Informationen finden Sie in meinem Beitrag superuser.com/questions/266758/… .
RolandoMySQLDBA
Haben Sie in Ihrer Konfigurationsdatei Werte für die Optionen $ cfg ['Servers'] [$ i] ['hide_db'] oder $ cfg ['Servers'] [$ i] ['only_db']?
smokes2345

Antworten:

1

Wenn Ihre CURRENT_USER () nicht sagt root@localhost, dann haben Sie keine Root-Rechte und dürfen sich nicht als solche verbinden.

Führen Sie diese aus, um zu sehen, welche tatsächlichen Berechtigungen Sie nach dem Herstellen der Verbindung haben

SHOW GRANTS;

Wenn Sie eine Verbindung zu einer bestimmten Datenbank herstellen, sollte dies angezeigt werden

  • die Tabellen dieser Datenbank
  • Metadaten in der INFORMATION_SCHEMA nur für diese Datenbank

Angenommen, Sie haben eine Verbindung zu buyspace_systdb hergestellt

Die Ausgabe von SHOW GRANTS;würde höchstwahrscheinlich 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 anmeldenroot@localhost , kann sich USER () nicht als CURRENT_USER () authentifizieren . Der Beweis dafür ist in der ersten Anzeige in Ihrer Frage. Beachten Sie, dass Sie nur information_schema sehen können. Mit Ausnahme von information_schema.schemata mit 1 oder 2 Einträgen ist es praktisch leer. Wenn root@'%'existierte in mysql.userund hatte die gleichen Privilegien root@localhost, dann wäre es erlaubt, alles wie zu sehen root@localhost.

MySQL verfügt über ein Authentifizierungsschema, das sich spiralförmig nach unten auswirkt. Wenn der Benutzer, mit dem Sie eine Verbindung herstellen möchten, nicht vorhanden ist, werden vage Benutzernamen verwendet (Platzhalter oder eingeschränkte Berechtigungen sind zulässig). Weitere Informationen hierzu finden Sie in meinem DBA StackExchange-Beitrag MySQL-Fehler: Zugriff verweigert für Benutzer 'a' @ 'localhost' (mit Kennwort: YES) .

Fazit : Sie können keine Verbindung root@localhostvon einem entfernten Standort aus herstellen

RolandoMySQLDBA
quelle