Der Login wird abgewiesen, obwohl das Passwort stimmt? Bei MySQL zählt auch, von welchem Host aus man kommt — der Benutzer ist an eine Herkunft gebunden.
Aufwand:
ca. 25 Min.
Das Symptom
Die Anmeldung an der MySQL- oder MariaDB-Datenbank scheitert mit Access denied for user 'name'@'host', obwohl Benutzername und Passwort nachweislich korrekt sind. Oft
funktioniert der Zugang direkt auf dem Server, aber die Anwendung von einem anderen
Rechner aus wird abgewiesen.
Die „Layer 8“-Wahrheit
MySQL hat eine Eigenheit, die viele überrascht: Ein Benutzer ist dort niemals nur
ein Name, sondern immer die Kombination aus Name und Herkunft. „app@localhost“ und
„app@192.168.1.50“ sind zwei völlig verschiedene Konten, jedes mit eigenem Passwort
und eigenen Rechten. Deshalb kann derselbe Login lokal anstandslos durchgehen und
vom Netzwerk aus scheitern — schlicht, weil für diese Herkunft gar kein passender
Benutzer existiert.
Der Schlüssel steckt in der Fehlermeldung selbst: Sie nennt genau die Herkunft, von
der der Zugriff kam. Wer sie mit den tatsächlich angelegten Benutzer-Host-Paaren
vergleicht, sieht das Loch sofort. Die Lösung ist dann kein neues Passwort, sondern
der richtige Zugang für die richtige Herkunft — möglichst eng gefasst und nicht
pauschal für die ganze Welt geöffnet. Und wenn wirklich alles stimmt und es trotzdem
klemmt, ist oft das moderne Anmeldeverfahren neuerer Server der letzte Stolperstein.
Die echte, verifizierte Lösung
1000 % faktenbasiert. Jeder Befehl ist real, jeder Pfad existiert. Schritt für Schritt:
1.
Benutzer und Herkunft als Einheit begreifen
In MySQL ist ein Benutzer nicht nur ein Name, sondern die Kombination aus Name und Herkunfts-Host — etwa „user@localhost“ gegenüber „user@%“. Ein Zugang, der lokal funktioniert, kann von einem anderen Rechner aus abgewiesen werden, weil dort ein anderer Herkunftseintrag gilt oder fehlt.
2.
Die Fehlermeldung genau lesen
Die Meldung nennt Benutzer und Host, unter denen der Zugriff versucht wurde — etwa „user@192.168.1.10“. Steht dort ein Host, für den kein Benutzer angelegt ist, ist die Ursache gefunden: Es fehlt der passende Herkunftseintrag, nicht das Passwort.
3.
Die vorhandenen Benutzer prüfen
Als Administrator nachsehen, welche Benutzer-Host-Kombinationen tatsächlich existieren:
SELECT user, host FROM mysql.user;
4.
Den passenden Zugang anlegen
Fehlt der Zugang für die benötigte Herkunft, ihn gezielt anlegen und berechtigen. Statt weit offenem Zugriff möglichst die konkrete Adresse oder das konkrete Netz eintragen:
CREATE USER 'app'@'192.168.1.%' IDENTIFIED BY 'passwort';
GRANT ALL ON meinedb.* TO 'app'@'192.168.1.%';
5.
Das Authentifizierungs-Plugin bedenken
Neuere MySQL-Versionen nutzen ein moderneres Anmeldeverfahren, mit dem ältere Clients nicht umgehen können. Scheitert die Anmeldung trotz korrekter Daten, prüfen, welches Authentifizierungs-Plugin für den Benutzer gesetzt ist, und es an den Client anpassen.
Häufige Fragen (FAQ)
?Das Passwort ist richtig, trotzdem Access denied. Wie geht das?
Weil MySQL Benutzer und Herkunft als Einheit betrachtet. Der Benutzer app@localhost ist ein anderer als app@%. Melden Sie sich über das Netzwerk an, obwohl der Benutzer nur für localhost angelegt wurde, weist MySQL Sie ab – völlig unabhängig vom Passwort.
?Ich habe den Benutzer angelegt und es geht trotzdem nicht. Was fehlt?
Häufig das Authentifizierungs-Plugin. Neuere MySQL-Versionen verwenden standardmäßig caching_sha2_password, mit dem ältere Clients und Bibliotheken nicht umgehen können. Die Verbindung scheitert dann mit derselben Meldung. Ein Blick in die Spalte plugin der Tabelle mysql.user klärt das.
Belege
Diese Seite ist gegen die folgenden Primärquellen geprüft – Hersteller, Standard oder Gesetzestext. Wer es nicht glaubt, muss es nicht: Da steht, wo es nachzulesen ist.