✦ Oplossingen · Database (MySQL/MariaDB)

MySQL: Access denied for user (fout 1045)

'ERROR 1045 (28000): Access denied for user 'naam'@'localhost' (using password: YES)' betekent een verkeerd wachtwoord, verkeerde host of ontbrekende rechten. Zo controleer je alle drie.

Waarom gebeurt dit?

In MySQL en MariaDB bestaat een gebruiker uit een naam én een host: 'shop'@'localhost' is een andere gebruiker dan 'shop'@'%'. De melding Access denied for user 'shop'@'localhost' (using password: YES) zegt dus ook vanaf welke host je inlogt en of er een wachtwoord werd meegestuurd.

De oorzaak is bijna altijd één van drie: het wachtwoord klopt niet, de gebruiker bestaat niet voor die host, of de gebruiker heeft geen rechten op deze database (dan zie je vaak fout 1044, Access denied … to database).

Zo los je het op, stap voor stap

Menunamen kunnen per versie of toestel iets anders heten. Loop de stappen op volgorde af en stop zodra het werkt.

  1. Lees host en 'using password'

    'using password: NO' betekent dat de applicatie helemaal geen wachtwoord meestuurt: dan is de configuratie niet goed ingelezen. Let ook op de host: localhost (via socket) of 127.0.0.1 (via TCP) kan uitmaken.

  2. Controleer welke gebruikers er bestaan

    Log in als beheerder en bekijk de gebruiker en zijn rechten.

    SELECT user, host FROM mysql.user WHERE user = 'shop';
    SHOW GRANTS FOR 'shop'@'localhost';
  3. Zet het wachtwoord opnieuw

    Werkt het wachtwoord niet, stel dan een nieuw in en zet het ook in de configuratie van de applicatie.

    ALTER USER 'shop'@'localhost' IDENTIFIED BY 'een-lang-nieuw-wachtwoord';
  4. Geef de juiste rechten

    Geef de gebruiker alleen rechten op zijn eigen database.

    GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, ALTER, INDEX, DROP
      ON winkel.* TO 'shop'@'localhost';
  5. Let op speciale tekens in wachtwoorden

    Een wachtwoord met tekens als $, " of \ kan in een configuratiebestand of .env verkeerd worden ingelezen. Zet het tussen de juiste aanhalingstekens, of kies voor de test tijdelijk een wachtwoord met alleen letters en cijfers.

Lukt het niet? Wij helpen

Kom je er met deze stappen niet uit, of wil je het liever niet zelf doen? We kijken online mee of komen langs. Hulp op afstand kost €20 per uur; komen we langs, dan is de prijs op aanvraag. Je weet vooraf waar je aan toe bent.

Aanvraag

Hulp aanvragen

Schrijf kort wat er misgaat en wat je al hebt geprobeerd. Kies of we bellen, online meekijken of langskomen.

Veelgestelde vragen

Vragen over dit probleem

Met phpMyAdmin kan ik wel inloggen, mijn site niet.

Vergelijk host, gebruikersnaam en wachtwoord in de configuratie van de site met wat je in phpMyAdmin gebruikt. Vaak is het een tikfout of een andere host.

Is het veilig om 'shop'@'%' te maken?

Dat staat inloggen vanaf elke host toe. Doe dat alleen als het echt nodig is, en beperk de toegang dan met een firewall.

Ik krijg 1044 in plaats van 1045.

Dan klopt het inloggen, maar heeft de gebruiker geen rechten op deze database. Geef de rechten met GRANT.