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@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. Wenn root@'%'
existierte in mysql.user
und 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@localhost
von einem entfernten Standort aus herstellen