sql >> Database >  >> RDS >> MariaDB

Oplossing:toegang geweigerd voor gebruiker 'root'@'localhost' in MariaDB

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.


  1. Behoud ouder-kindrelaties bij het kopiëren van hiërarchische gegevens

  2. R12.2 Online patching gereedheidsrapport

  3. Android SQLite-database en app-update

  4. Converteer 'time' naar 'datetime2' in SQL Server (T-SQL-voorbeelden)