Om du får ett felmeddelande om att åtkomst nekas för root användare i MariaDB, kan den här artikeln hjälpa.
Felet
Jag försökte importera mitt systems tidszonsinformation till MariaDB med följande kommando:
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql Men det resulterade i följande fel:
ERROR 1698 (28000): Access denied for user 'root'@'localhost'
Orsaken
Efter att ha undersökt detta insåg jag att root användaren hade ännu inte fått sitt lösenord inställt.
När jag körde följande fråga:
SELECT user, password
FROM user
WHERE User = 'root'; Jag fick följande resultat:
+-------------+----------+ | User | Password | +-------------+----------+ | root | invalid | +-------------+----------+
MariaDB-dokumentationen anger följande:
Ändå kanske vissa användare vill logga in som MariaDB-rot utan att använda sudo. Därför är den gamla autentiseringsmetoden - konventionellt MariaDB-lösenord - fortfarande tillgänglig. Som standard är det inaktiverat ("ogiltigt" är inte en giltig lösenordshash), men man kan ställa in lösenordet med en vanlig
SET PASSWORDpåstående. Och fortfarande behålla den lösenordslösa åtkomsten via sudo.
Så det ser ut som vårt svar.
Lösningen
Enligt stycket ovan behövde jag ställa in lösenordet för root användare:
SET PASSWORD FOR 'root'@localhost = PASSWORD("myReallyStrongPwd"); Att köra det (med ett annat lösenord) gjorde susen.
Så om du får ovanstående fel kanske detta hjälper.