Einführung
Dieser Artikel ist für Benutzer, die versuchen, sich mit einem korrekten Kennwort bei MySQL anzumelden, aber eine Fehlermeldung erhalten: „Fehler 1045: Zugriff verweigert für Benutzer (mit Passwort: YES)“
Wenn Sie Ihr MySQL-Root-Passwort vergessen haben, lesen Sie bitte diesen Artikel:
- Wie man das MySQL-Root-Passwort zurücksetzt.
Wenn Sie versuchen, sich als root über phpMyAdmin anzumelden, lesen Sie bitte:
- Kann sich nicht bei phpMyAdmin anmelden: mysqli_real_connect(): (HY000/1698): Zugriff verweigert für Benutzer ‚root’@’localhost‘
Understanding MySQL Users and Hosts
MySQL schränkt den Benutzerzugriff basierend auf dem host
-Wert eines Benutzers ein. Standardmäßig ist der host
-Wert für das Root-Konto und neue Benutzer auf localhost
gesetzt, was bedeutet, dass Sie sich nur über den lokalen Rechner oder über phpMyAdmin anmelden können, wenn Sie auf demselben lokalen Host installiert sind. Wenn Sie versuchen, sich aus der Ferne bei einem localhost
-Konto anzumelden, kann es sein, dass Ihr korrektes Kennwort mit der Meldung „Access denied for user (using password: YES)“ zurückgewiesen wird.
Betrachten wir die folgende einfache MySQL-Benutzerliste als Beispiel:
+------------------+-------------+| User | Host |+------------------+-------------+| test-user1 | localhost || test-user3 | 10.0.53.185 || test-user2 | % |
Oben haben wir drei MySQL-Benutzer mit unterschiedlichen host
-Werten.
Schauen wir uns ein paar Szenarien an, in denen Ihr korrektes Kennwort je nach host
-Wert abgelehnt werden kann:
- Benutzer
- ✅ Kann sich von
localhost
aus anmelden, d. h. von dem Rechner aus, auf dem der MySQL-Dienst läuft. - ✅ Kann sich von phpMyAdmin aus anmelden, wenn es auf demselben lokalen Host installiert ist.
- ❌Kann sich nicht aus der Ferne anmelden und erhält die Meldung „Access denied for user (using password: YES)“.
- ✅ Kann sich von
- Benutzer
- ✅ Kann sich nur von der IP-Adresse
10.0.53.185
anmelden. - ❌ Kann sich von keiner anderen IP-Adresse anmelden „Zugriff für Benutzer verweigert (mit Kennwort: JA)“.
- ❌ Kann sich von localhost nicht anmelden „Zugriff für Benutzer verweigert (mit Passwort: JA)“.
- ❌ Kann sich von phpMyAdmin nicht anmelden „Zugriff für Benutzer verweigert (mit Passwort: JA)“.
- ✅ Kann sich nur von der IP-Adresse
- Benutzer
%
- ✅ Kann sich von überall aus anmelden (
%
ist ein Platzhalter).
- ✅ Kann sich von überall aus anmelden (
Ändern des Host-Wertes eines MySQL-Benutzers
Sie können den Host-Wert für einen Benutzer ändern, der das MySQL-Root-Konto oder ein beliebiges Konto mit Superuser-Rechten verwendet. Dies kann über die Kommandozeile oder phpMyAdmin erfolgen.
Über die Kommandozeile
Sie müssen auf Ihre MySQL-Datenbank mit root oder einem Superuser zugreifen, der Zugriff auf die Tabelle MySQL Users hat.
Der root-Account ist standardmäßig nur von localhost aus zugänglich, so dass Sie möglicherweise die Meldung „Access denied for user (using password: YES)“ erhalten, wenn Sie versuchen, sich aus der Ferne anzumelden. In diesem Fall müssen Sie sich irgendwie lokalen Zugriff auf den Server verschaffen.
Um sich bei einer lokalen MySQL-Datenbank anzumelden:
mysql -u root -p
Um sich bei einer entfernten MySQL-Datenbank anzumelden, ersetzen Sie einfach hostname_or_ip
durch Ihre eigene.
mysql -u root -h hostname_or_ip -p
Nachdem Sie sich bei MySQL angemeldet haben, listen Sie alle MySQL-Benutzer und ihre entsprechenden Hosts in Ihrer Datenbank auf.
SELECT User,Host FROM mysql.user;
Ergebnis:
+------------------+-------------+| User | Host |+------------------+-------------+| test-user1 | localhost || test-user3 | 10.0.53.185 || test-user2 | % |+------------------+-------------+3 rows in set (0.00 sec)
Oben sehen Sie eine Liste der MySQL-Benutzer und ihrer Hosts.
Wenn Sie sich mit test-user1
von einem beliebigen Ort aus anmelden möchten, müssen Sie den Host-Wert in den Platzhalter %
ändern, der eine Fernanmeldung von überall aus ermöglicht. Um die Sicherheit zu erhöhen, können Sie diesen Wert in eine IP-Adresse ändern.
Im folgenden Beispiel ändern wir den Host-Wert für test-user1
von localhost
auf %
%
bedeutet Platzhalter und ermöglicht es diesem Benutzer, sich von überall aus anzumelden.
RENAME USER 'test-user1'@'localhost' TO 'test-user1'@'%';
Sie müssen die MySQL-Berechtigungen leeren, damit die Änderungen wirksam werden.
FLUSH PRIVILEGES;
Versuchen Sie nun, sich erneut aus der Ferne anzumelden.
Über phpMyAdmin
Melden Sie sich mit Ihrem Root-Konto oder einem Konto mit Superuser-Rechten bei phpMyAdmin an.
- Wenn Sie in phpMyadmin eingeloggt sind, klicken Sie auf die
mysql
Datenbank in der linken Spalte. - Klicken Sie auf die Registerkarte SQL.
- Tippen Sie in das SQL-Abfragefeld oder fügen Sie es ein:
SELECT User,Host FROM mysql.user;
, um alle MySQL-Benutzer in der Datenbank aufzulisten. - Klicken Sie auf Go, um die Abfrage auszuführen.
Sie sollten nun eine Liste aller MySQL-Benutzer und ihrer entsprechenden Hosts sehen.
Um den Host-Wert eines MySQl-Benutzers zu ändern:
- Doppelklicken Sie auf das Host-Feld neben dem Benutzer, den Sie ändern möchten (unten in rot).
- Geben Sie
%
ein, damit sich jeder von überall aus bei diesem Benutzer anmelden kann. Sie können dies auch in eine Remote-IP ändern, um die Sicherheit zu erhöhen. - Drücken Sie
ENTER
auf Ihrer Tastatur, um die Änderungen zu speichern.
Sie sind noch nicht fertig. Sie müssen jetzt die MySQL-Berechtigungen löschen.
- Klicken Sie erneut auf die Registerkarte SQL
- Tippen Sie in das Feld SQL-Abfrage oder fügen Sie sie ein:
FLUSH PRIVILEGES;
- Klicken Sie auf Go, um die Abfrage auszuführen.
Sie sollten jetzt in der Lage sein, sich aus der Ferne anzumelden.
Sagen Sie mir Bescheid, wenn das geholfen hat. Folgen Sie mir auf Twitter, Facebook und YouTube, oder 🍊 kaufen Sie mir einen Smoothie.
p.s. Ich habe meine AdSense-Einnahmen mit AI um 200% gesteigert 🤖. Lesen Sie meine Ezoic-Bewertung, um herauszufinden, wie.