MariaDB
 sql >> Database >  >> RDS >> MariaDB

Correzione:accesso negato per l'utente 'root'@'localhost' in MariaDB

Se ricevi un messaggio di errore che ti dice che l'accesso è stato negato per la root utente in MariaDB, questo articolo può essere d'aiuto.

L'errore

Stavo tentando di importare le informazioni sul fuso orario del mio sistema in MariaDB con il seguente comando:

mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql

Ma ha provocato il seguente errore:

ERROR 1698 (28000): Access denied for user 'root'@'localhost'

La causa

Dopo aver esaminato questo, mi sono reso conto che il root l'utente non aveva ancora impostato la password.

Quando ho eseguito la seguente query:

SELECT user, password 
FROM user
WHERE User = 'root';

Ho ottenuto il seguente risultato:

+-------------+----------+
| User        | Password |
+-------------+----------+
| root        | invalid  |
+-------------+----------+

La documentazione di MariaDB afferma quanto segue:

Tuttavia, alcuni utenti potrebbero voler accedere come root MariaDB senza usare sudo. Quindi il vecchio metodo di autenticazione - password MariaDB convenzionale - è ancora disponibile. Di default è disabilitato ("non valido" non è un hash di password valido), ma si può impostare la password con un consueto SET PASSWORD dichiarazione. E conserva ancora l'accesso senza password tramite sudo.

Quindi sembra la nostra risposta.

La soluzione

Come per il paragrafo precedente, avevo bisogno di impostare la password per il root utente:

SET PASSWORD FOR 'root'@localhost = PASSWORD("myReallyStrongPwd");

L'esecuzione (con una password diversa) ha funzionato.

Quindi, se ricevi l'errore sopra, forse questo sarà di aiuto.