sql >> Databasteknik >  >> RDS >> MariaDB

Fix:Åtkomst nekad för användaren 'root'@'localhost' i MariaDB

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 PASSWORD på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.


  1. Hur upprepar jag ett resurs-id #6 från ett MySql-svar i PHP?

  2. Hur konverterar jag ett intervall till ett antal timmar med postgres?

  3. Oracle - ORA-01489:resultatet av strängsammansättningen är för lång

  4. NEWID() vs NEWSEQUENTIALID() i SQL Server:Vad är skillnaden?