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.