Jeśli otrzymujesz błąd z informacją, że dostęp jest odmówiony dla root
użytkownika w MariaDB, ten artykuł może pomóc.
Błąd
Próbowałem zaimportować informacje o strefie czasowej mojego systemu do MariaDB za pomocą następującego polecenia:
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql
Ale spowodowało to następujący błąd:
ERROR 1698 (28000): Access denied for user 'root'@'localhost'
Przyczyna
Po zbadaniu tego zdałem sobie sprawę, że root
użytkownik nie miał jeszcze ustawionego hasła.
Kiedy uruchomiłem następujące zapytanie:
SELECT user, password
FROM user
WHERE User = 'root';
Otrzymałem następujący wynik:
+-------------+----------+ | User | Password | +-------------+----------+ | root | invalid | +-------------+----------+
Dokumentacja MariaDB zawiera następujące informacje:
Mimo to niektórzy użytkownicy mogą chcieć zalogować się jako root MariaDB bez używania sudo. Dlatego stara metoda uwierzytelniania — konwencjonalne hasło MariaDB — jest nadal dostępna. Domyślnie jest wyłączone („nieprawidłowy” nie jest prawidłowym hashem hasła), ale można ustawić hasło za pomocą zwykłego
SET PASSWORD
oświadczenie. I nadal zachowaj dostęp bez hasła przez sudo.
To wygląda na naszą odpowiedź.
Rozwiązanie
Zgodnie z powyższym akapitem, musiałem ustawić hasło dla root
użytkownik:
SET PASSWORD FOR 'root'@localhost = PASSWORD("myReallyStrongPwd");
Uruchomienie tego (z innym hasłem) załatwiło sprawę.
Więc jeśli otrzymasz powyższy błąd, być może to pomoże.