Als je een foutmelding krijgt dat de toegang is geweigerd voor de root
gebruiker in MariaDB, kan dit artikel helpen.
De fout
Ik probeerde de tijdzone-informatie van mijn systeem in MariaDB te importeren met het volgende commando:
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql
Maar het resulteerde in de volgende fout:
ERROR 1698 (28000): Access denied for user 'root'@'localhost'
De oorzaak
Nadat ik dit had onderzocht, realiseerde ik me dat de root
gebruiker had zijn wachtwoord nog niet ingesteld.
Toen ik de volgende query uitvoerde:
SELECT user, password
FROM user
WHERE User = 'root';
Ik kreeg het volgende resultaat:
+-------------+----------+ | User | Password | +-------------+----------+ | root | invalid | +-------------+----------+
In de MariaDB-documentatie staat het volgende:
Toch willen sommige gebruikers zich misschien aanmelden als MariaDB-root zonder sudo te gebruiken. Vandaar dat de oude authenticatiemethode - conventioneel MariaDB-wachtwoord - nog steeds beschikbaar is. Standaard is het uitgeschakeld (“ongeldig” is geen geldige wachtwoord-hash), maar men kan het wachtwoord instellen met een gewoon
SET PASSWORD
uitspraak. En behoud nog steeds de wachtwoordloze toegang via sudo.
Dus dat lijkt op ons antwoord.
De oplossing
Volgens de bovenstaande paragraaf moest ik het wachtwoord instellen voor de root
gebruiker:
SET PASSWORD FOR 'root'@localhost = PASSWORD("myReallyStrongPwd");
Dat uitvoeren (met een ander wachtwoord) deed de truc.
Dus als je de bovenstaande foutmelding krijgt, kan dit misschien helpen.