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.
Wenn ich das Login für diese bestimmte Datenbank verwende, kann ich es sehen.
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.
mysql
database
phpmyadmin
TomFirth
quelle
quelle
SELECT USER() AttemptedToConnectAsUser,CURRENT_USER() AllowedToConnectAsUser;
Was ist die Ausgabe ???Antworten:
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
Wenn Sie eine Verbindung zu einer bestimmten Datenbank herstellen, sollte dies angezeigt werden
Angenommen, Sie haben eine Verbindung zu buyspace_systdb hergestellt
Die Ausgabe von
SHOW GRANTS;
würde höchstwahrscheinlich so aussehenDer Benutzer
root@localhost
wü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. Wennroot@'%'
existierte inmysql.user
und hatte die gleichen Privilegienroot@localhost
, dann wäre es erlaubt, alles wie zu sehenroot@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@localhost
von einem entfernten Standort aus herstellenquelle