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.