Introduktion
Den här artikeln är för användare som försöker logga in på MySQL med ett korrekt lösenord men får ett fel: ”Error 1045: Access denied for user (using password: YES)”
Om du har glömt ditt lösenord för MySQL-roten kan du läsa den här artikeln:
- Hur du återställer MySQL:s root-lösenord.
Om du försöker logga in som root via phpMyAdmin, se:
- Can’t logga in i phpMyAdmin: mysqli_real_connect(): (HY000/1698): Access denied for user ’root’@’localhost’
Understanding MySQL Users and Hosts
MySQL begränsar användaråtkomst baserat på host
-värdet för en användare. Som standard är host
-värdet för rotkontot och nya användare inställt på localhost
, vilket innebär att du bara kan logga in via den lokala maskinen eller via phpMyAdmin om den är installerad på samma localhost. Om du försöker logga in på ett localhost
-konto på distans kan det hända att ditt korrekta lösenord avvisas med ”Access denied for user (using password: YES)”.
Om vi tittar på den här enkla MySQL-användarförteckningen nedan som ett exempel:
+------------------+-------------+| User | Host |+------------------+-------------+| test-user1 | localhost || test-user3 | 10.0.53.185 || test-user2 | % |
Ovanför har vi tre MySQL-användare med olika host
-värden.
Låt oss ta en titt på några scenarier där ditt korrekta lösenord kan avvisas beroende på host
-värdet:
- Användare
- ✅ Kan logga in från
localhost
, det vill säga den maskin som MySQL-tjänsten körs på. - ✅ Kan logga in från phpMyAdmin om den är installerad på samma lokala värd.
- ❌Kan inte logga in på distans och får ”Access denied for user (using password: YES)”.
- ✅ Kan logga in från
- User
- ✅ Kan endast logga in från IP-adressen
10.0.53.185
. - ❌ Kan inte logga in från någon annan IP-adress ”Access denied for user (using password: YES)”.
- ❌ Kan inte logga in från localhost ”Access denied for user (using password: YES)”.
- ❌ Kan inte logga in från phpMyAdmin ”Access denied for user (using password: YES)”.
- ✅ Kan endast logga in från IP-adressen
- User
%
- ✅ Kan logga in från var som helst (
%
är ett jokertecken).
- ✅ Kan logga in från var som helst (
Ändra en MySQL-användares värdvärde
Du kan ändra värdvärdet för en användare som använder MySQL-rootkontot eller något konto med superanvändarrättigheter. Detta kan göras via kommandoraden eller phpMyAdmin.
Via kommandoraden
Du måste komma åt din MySQL-databas med root eller en superanvändare som har åtkomst till MySQL Users-tabellen.
Rotkontot är som standard endast åtkomligt från localhost, så du kan få ”Access denied for user (using password: YES)” om du försöker logga in på distans. I sådana fall måste du på något sätt få lokal tillgång till servern.
För att logga in på en lokal MySQL-databas:
mysql -u root -p
För att logga in på en fjärrbaserad MySQL-databas ersätter du helt enkelt hostname_or_ip
med din egen.
mysql -u root -h hostname_or_ip -p
När du väl är inloggad på MySQL, listar du alla MySQL-användare och deras motsvarande värdar i din databas.
SELECT User,Host FROM mysql.user;
Resultat:
+------------------+-------------+| User | Host |+------------------+-------------+| test-user1 | localhost || test-user3 | 10.0.53.185 || test-user2 | % |+------------------+-------------+3 rows in set (0.00 sec)
Ovanför kan vi se en lista över MySQL-användare och deras värdar.
Om vi vill logga in med hjälp av test-user1
på distans från var som helst, måste vi ändra host-värdet till jokertecknet %
, vilket tillåter fjärrinloggning från var som helst. För ökad säkerhet kan du ändra detta till en IP-adress.
I exemplet nedan ändrar vi värdvärdet för test-user1
från localhost
till %
%
betyder jokertecken och gör det möjligt för den här användaren att fjärrlogga in var som helst.
RENAME USER 'test-user1'@'localhost' TO 'test-user1'@'%';
Du måste spola MySQL-privilegier för att ändringarna ska få effekt.
FLUSH PRIVILEGES;
Försök nu att logga in igen på distans.
Via phpMyAdmin
Logga in på phpMyAdmin med ditt root-konto eller ett konto med superanvändarrättigheter.
- När du är inloggad i phpMyadmin klickar du på
mysql
-databasen i den vänstra kolumnen. - Klicka på fliken SQL.
- Typ eller klistra in i rutan för SQL-förfrågan:
SELECT User,Host FROM mysql.user;
för att lista alla MySQL-användare i databasen. - Klicka på Go för att köra frågan.
Du bör nu se en lista över alla MySQL-användare och deras motsvarande värdar.
För att ändra värdvärdet för en MySQl-användare:
- Dubbelklicka på värdfältet bredvid den användare du vill ändra (i rött nedan).
- Typ
%
för att låta vem som helst logga in på den här användaren var som helst. Du kan också ändra detta till en fjärr-IP för bättre säkerhet. - Tryck
ENTER
på tangentbordet för att spara ändringarna.
Du är inte klar än. Du måste nu spola MySQL-privilegier.
- Klicka på fliken SQL igen
- Typ eller klistra in i rutan för SQL-frågan:
FLUSH PRIVILEGES;
- Klicka på Gå för att köra frågan.
Du bör nu kunna logga in på distans.
Håll mig underrättad om det här hjälpte. Följ mig på Twitter, Facebook och YouTube, eller 🍊 köp mig en smoothie.
p.s. Jag ökade mina AdSense-intäkter med 200 % med hjälp av AI 🤖. Läs min recension av Ezoic för att ta reda på hur.