Pokud se vám zobrazuje chyba sdělující, že root
je přístup odepřen uživatel v MariaDB, může vám pomoci tento článek.
Chyba
Pokoušel jsem se importovat informace o časovém pásmu mého systému do MariaDB pomocí následujícího příkazu:
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql
Výsledkem však byla následující chyba:
ERROR 1698 (28000): Access denied for user 'root'@'localhost'
Příčina
Po prozkoumání toho jsem si uvědomil, že root
uživatel ještě neměl nastavené heslo.
Když jsem spustil následující dotaz:
SELECT user, password
FROM user
WHERE User = 'root';
Dostal jsem následující výsledek:
+-------------+----------+ | User | Password | +-------------+----------+ | root | invalid | +-------------+----------+
Dokumentace MariaDB uvádí následující:
Přesto se někteří uživatelé mohou chtít přihlásit jako root MariaDB bez použití sudo. Stará metoda ověřování – konvenční heslo MariaDB – je tedy stále dostupná. Ve výchozím nastavení je zakázáno ("invalid" není platný hash hesla), ale heslo lze nastavit pomocí obvyklého
SET PASSWORD
prohlášení. A stále si zachováte přístup bez hesla přes sudo.
Takže to vypadá jako naše odpověď.
Řešení
Podle výše uvedeného odstavce jsem potřeboval nastavit heslo pro root
uživatel:
SET PASSWORD FOR 'root'@localhost = PASSWORD("myReallyStrongPwd");
Spuštění toho (s jiným heslem) udělalo trik.
Takže pokud se zobrazí výše uvedená chyba, možná to pomůže.