Inleiding
Dit artikel is voor gebruikers die zich met een correct wachtwoord proberen aan te melden bij MySQL, maar een foutmelding krijgen: “Error 1045: Access denied for user (using password: YES)”
Als u uw MySQL root-wachtwoord bent vergeten, zie dan dit artikel:
- Hoe het MySQL-rootwachtwoord opnieuw in te stellen.
Als u zich probeert aan te melden als root via phpMyAdmin, zie dan:
- Kan niet inloggen in phpMyAdmin: mysqli_real_connect(): (HY000/1698): Toegang geweigerd voor gebruiker ‘root’@’localhost’
Inzicht in MySQL-gebruikers en hosts
MySQL beperkt de gebruikerstoegang op basis van de host
-waarde van een gebruiker. Standaard is de host
waarde voor de root account en nieuwe gebruikers ingesteld op localhost
, wat betekent dat u alleen kunt inloggen via de lokale machine of via phpMyAdmin als deze op dezelfde localhost is geïnstalleerd. Als u probeert in te loggen in een localhost
account op afstand, kan het correcte wachtwoord worden geweigerd met “Access denied for user (using password: YES)”.
Als we kijken naar deze eenvoudige MySQL gebruikerslijst hieronder als een voorbeeld:
+------------------+-------------+| User | Host |+------------------+-------------+| test-user1 | localhost || test-user3 | 10.0.53.185 || test-user2 | % |
Hierboven hebben we drie MySQL gebruikers met verschillende host
waarden.
Laten we eens kijken naar een paar scenario’s waar uw juiste wachtwoord kan worden geweigerd, afhankelijk van de host
waarde:
- Gebruiker
- ✅ Kan inloggen vanaf de
localhost
, dat wil zeggen, de machine waarop de MySQL service draait. - ✅ Kan inloggen vanuit phpMyAdmin indien geïnstalleerd op dezelfde localhost.
- ❌Kan niet inloggen op afstand en zal “Toegang geweigerd voor gebruiker (met wachtwoord: JA)” krijgen.
- ✅ Kan inloggen vanaf de
- User
- ✅ Kan alleen inloggen vanaf het IP-adres
10.0.53.185
. - ❌ Kan niet inloggen vanaf een ander IP-adres “Toegang geweigerd voor gebruiker (met wachtwoord: JA)”.
- ❌ Kan niet inloggen vanaf localhost “Toegang geweigerd voor gebruiker (met wachtwoord: JA)”.
- ❌ Kan niet inloggen vanaf phpMyAdmin “Toegang geweigerd voor gebruiker (met wachtwoord: JA)”.
- ✅ Kan alleen inloggen vanaf het IP-adres
- User
%
- ✅ Kan overal vandaan inloggen (
%
is een wildcard).
- ✅ Kan overal vandaan inloggen (
De hostwaarde van een MySQL-gebruiker wijzigen
U kunt de hostwaarde voor een gebruiker wijzigen met de MySQL root-account of een account met superuser-privileges. Dit kan worden gedaan via de opdrachtregel of phpMyAdmin.
Via opdrachtregel
U moet uw MySQL database benaderen met root of een superuser die toegang heeft tot de MySQL Users tabel.
De root account is standaard alleen toegankelijk vanaf localhost, dus u kunt “Access denied for user (using password: YES)” krijgen als u probeert in te loggen op afstand. In dat geval moet u op een of andere manier lokale toegang tot de server krijgen.
Om in te loggen in een lokale MySQL database:
mysql -u root -p
Om in te loggen in een MySQL database op afstand, vervangt u hostname_or_ip
door uw eigen.
mysql -u root -h hostname_or_ip -p
Eenmaal ingelogd in MySQL, maak een lijst van alle MySQL gebruikers en hun bijbehorende hosts in uw database.
SELECT User,Host FROM mysql.user;
Resultaat:
+------------------+-------------+| User | Host |+------------------+-------------+| test-user1 | localhost || test-user3 | 10.0.53.185 || test-user2 | % |+------------------+-------------+3 rows in set (0.00 sec)
Hierboven zien we een lijst van MySQL gebruikers en hun hosts.
Als we willen inloggen met test-user1
op afstand vanaf elke locatie, moeten we de host waarde veranderen in het wildcard %
, die inloggen op afstand vanaf elke locatie mogelijk zal maken. Voor een betere beveiliging kunt u dit veranderen in een IP-adres.
In het onderstaande voorbeeld veranderen we de host voor test-user1
van localhost
in %
%
betekent wildcard en staat deze gebruiker toe om op afstand in te loggen vanaf elke locatie.
RENAME USER 'test-user1'@'localhost' TO 'test-user1'@'%';
U moet de MySQL rechten doorspoelen voordat de wijzigingen effect hebben.
FLUSH PRIVILEGES;
Probeer nu opnieuw in te loggen vanop afstand.
Via phpMyAdmin
Log in phpMyAdmin met uw root account of een account met superuser rechten.
- Als u bent ingelogd in phpMyadmin, klikt u op de
mysql
database in de linkerkolom. - Klik op het tabblad SQL.
- Type of plak in het veld SQL query:
SELECT User,Host FROM mysql.user;
om een lijst te maken van alle MySQL-gebruikers in de database. - Klik op Go om de query uit te voeren.
U zou nu een lijst moeten zien van alle MySQL-gebruikers en hun bijbehorende hosts.
Om de hostwaarde van een MySQl-gebruiker te wijzigen:
- Dubbelklik op het hostveld naast de gebruiker die u wilt wijzigen (hieronder in het rood).
- Type
%
om iedereen toe te staan zich vanaf elke locatie bij deze gebruiker aan te melden. U kunt dit ook wijzigen in een IP-adres op afstand voor een betere beveiliging. - Druk op
ENTER
op uw toetsenbord om de wijzigingen op te slaan.
U bent nog niet klaar. U moet nu de MySQL-rechten doorspoelen.
- Klik opnieuw op het tabblad SQL
- Type of plak in het vak SQL-query:
FLUSH PRIVILEGES;
- Klik op Ga om de query uit te voeren.
U zou nu op afstand moeten kunnen inloggen.
Laat me weten of dit heeft geholpen. Volg me op Twitter, Facebook en YouTube, of 🍊 koop me een smoothie.
p.s. Ik verhoogde mijn AdSense inkomsten met 200% met behulp van AI 🤖. Lees mijn Ezoic review om uit te vinden hoe.