MariaDB
 sql >> Datenbank >  >> RDS >> MariaDB

Fix:Zugriff verweigert für Benutzer ‚root‘@‘localhost‘ in MariaDB

Wenn Sie eine Fehlermeldung erhalten, die Ihnen mitteilt, dass der Zugriff für root verweigert wird Benutzer in MariaDB kann dieser Artikel hilfreich sein.

Der Fehler

Ich habe versucht, die Zeitzoneninformationen meines Systems mit dem folgenden Befehl in MariaDB zu importieren:

mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql

Aber es führte zu folgendem Fehler:

ERROR 1698 (28000): Access denied for user 'root'@'localhost'

Die Ursache

Nachdem ich dies untersucht hatte, stellte ich fest, dass die Datei root Benutzer hatte noch kein Passwort gesetzt.

Als ich die folgende Abfrage ausführte:

SELECT user, password 
FROM user
WHERE User = 'root';

Ich habe folgendes Ergebnis:

+-------------+----------+
| User        | Password |
+-------------+----------+
| root        | invalid  |
+-------------+----------+

In der MariaDB-Dokumentation heißt es:

Dennoch möchten sich einige Benutzer möglicherweise als MariaDB-Root anmelden, ohne sudo zu verwenden. Daher ist die alte Authentifizierungsmethode – herkömmliches MariaDB-Passwort – weiterhin verfügbar. Standardmäßig ist es deaktiviert („ungültig“ ist kein gültiger Passwort-Hash), aber man kann das Passwort mit einem üblichen SET PASSWORD setzen Erklärung. Und behalten Sie trotzdem den passwortlosen Zugriff über sudo bei.

Das sieht also nach unserer Antwort aus.

Die Lösung

Gemäß dem obigen Absatz musste ich das Passwort für root festlegen Benutzer:

SET PASSWORD FOR 'root'@localhost = PASSWORD("myReallyStrongPwd");

Das Ausführen (mit einem anderen Passwort) hat den Zweck erfüllt.

Wenn Sie also den obigen Fehler erhalten, hilft dies vielleicht weiter.