Layer 8Ehrlicher Tech-Support
SoftwareSchweregrad: LästigAccess denied for user

MySQL: Access denied for user

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. 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. 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. 3.

    Die vorhandenen Benutzer prüfen

    Als Administrator nachsehen, welche Benutzer-Host-Kombinationen tatsächlich existieren:

    SELECT user, host FROM mysql.user;
    
  4. 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. 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.

Zuletzt geprüft am . Dokumentation altert – ein Datum daneben ist der einzige ehrliche Umgang damit.

Auch zu finden unter

Verwandte Fehler

SWLästigpassword authentication failed for user

PostgreSQL: password authentication failed for user

PostgreSQL meldet „password authentication failed“? Falsches Passwort, falscher Nutzer oder pg_hba.conf erlaubt die Methode nicht. So kommst du rein.

SWLästigER_NET_PACKET_TOO_LARGE

MySQL: Paket zu groß, Verbindung weg

Ein Einspielvorgang bricht ab, weil das Paket größer ist als erlaubt? MySQL kappt die Verbindung — Client und Server brauchen beide mehr Luft.