Introduktion
Denne artikel er for brugere, der forsøger at logge ind på MySQL med et korrekt kodeord, men får en fejl: “Error 1045: Access denied for user (using password: YES)”
Hvis du har glemt dit MySQL root password, skal du se denne artikel:
- Sådan nulstilles MySQL-rootadgangskoden.
Hvis du forsøger at logge ind som root via phpMyAdmin, kan du se:
- Kan ikke logge ind på phpMyAdmin: mysqli_real_connect(): (HY000/1698): Access denied for user ‘root’@’localhost’
Understanding MySQL Users and Hosts
MySQL begrænser brugeradgangen baseret på host
-værdien af en bruger. Som standard er host
-værdien for root-kontoen og nye brugere indstillet til localhost
, hvilket betyder, at du kun kan logge ind via den lokale maskine eller via phpMyAdmin, hvis den er installeret på samme localhost. Hvis du forsøger at logge på en localhost
-konto eksternt, kan den afvise din korrekte adgangskode med “Access denied for user (using password: YES)”.
Hvis vi ser på denne simple MySQL-brugerliste nedenfor som et eksempel:
+------------------+-------------+| User | Host |+------------------+-------------+| test-user1 | localhost || test-user3 | 10.0.53.185 || test-user2 | % |
Ovenfor har vi tre MySQL-brugere med forskellige host
-værdier.
Lad os se på et par scenarier, hvor dit korrekte password kan blive afvist afhængigt af host
-værdien:
- Bruger
- ✅ Kan logge ind fra
localhost
, det vil sige den maskine, hvor MySQL-tjenesten kører. - ✅ Kan logge ind fra phpMyAdmin, hvis den er installeret på samme localhost.
- ❌Kan ikke logge ind eksternt og får “Access denied for user (using password: YES)” (adgang nægtet for brugeren (med adgangskode: YES)).
- ✅ Kan logge ind fra
- User
- ✅ Kan kun logge ind fra IP-adressen
10.0.53.185
. - ❌ Kan ikke logge ind fra en anden IP-adresse “Access denied for user (using password: YES)”.
- ❌ Kan ikke logge ind fra localhost “Access denied for user (using password: YES)”.
- ❌ Kan ikke logge ind fra phpMyAdmin “Access denied for user (using password: YES)”.
- ✅ Kan kun logge ind fra IP-adressen
- Bruger
%
- ✅ Kan logge ind fra hvor som helst (
%
er et jokertegn).
- ✅ Kan logge ind fra hvor som helst (
Ændring af en MySQL-brugers værtsværdi
Du kan ændre værtsværtsværdien for en bruger ved hjælp af MySQL-rootkontoen eller en hvilken som helst konto med superbrugerrettigheder. Dette kan gøres via kommandolinjen eller phpMyAdmin.
Via kommandolinjen
Du skal få adgang til din MySQL-database ved hjælp af root eller en superbruger, der har adgang til tabellen MySQL Users.
Rotkontoen er som standard kun tilgængelig fra localhost, så du kan få “Access denied for user (using password: YES)”, hvis du forsøger at logge ind eksternt. I så fald skal du på en eller anden måde få lokal adgang til serveren.
For at logge ind på en lokal MySQL-database:
mysql -u root -p
For at logge ind på en ekstern MySQL-database skal du blot erstatte hostname_or_ip
med din egen.
mysql -u root -h hostname_or_ip -p
Når du er logget ind på MySQL, skal du liste alle MySQL-brugere og deres tilsvarende hosts i din database.
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)
Ovenfor kan vi se en liste over MySQL-brugere og deres værter.
Hvis vi ønsker at logge ind med test-user1
eksternt fra et hvilket som helst sted, skal vi ændre værtsværdien til jokertegnet %
, hvilket vil tillade fjernlogin fra et hvilket som helst sted. For at øge sikkerheden kan du ændre dette til en IP-adresse.
I eksemplet nedenfor ændrer vi værtsværdien for test-user1
fra localhost
til %
%
betyder wildcard og vil gøre det muligt for denne bruger at logge på fjernadgang fra et hvilket som helst sted.
RENAME USER 'test-user1'@'localhost' TO 'test-user1'@'%';
RENAME USER 'test-user1'@'localhost' TO 'test-user1'@'%';
Du skal skylle MySQL-privilegier for at ændringerne kan træde i kraft.
FLUSH PRIVILEGES;
Prøv nu at logge på igen eksternt.
Via phpMyAdmin
Log ind på phpMyAdmin med din root-konto eller en konto med superbrugerrettigheder.
- Når du er logget ind i phpMyadmin, skal du klikke på
mysql
-databasen i venstre kolonne. - Klik på fanen SQL.
- Typ eller indsæt i feltet SQL-forespørgsel:
SELECT User,Host FROM mysql.user;
for at få en liste over alle MySQL-brugere i databasen. - Klik på Gå for at køre forespørgslen.
Du bør nu få vist en liste over alle MySQL-brugere og deres tilsvarende hosts.
For at ændre værtsværtsværdien for en MySQl-bruger:
- Dobbeltklik på værtsfeltet ved siden af den bruger, du ønsker at ændre (i rødt nedenfor).
- Typ
%
for at tillade alle at logge ind på denne bruger fra hvor som helst. Du kan også ændre dette til en fjern-IP for bedre sikkerhed. - Tryk på
ENTER
på tastaturet for at gemme ændringerne.
Du er ikke færdig endnu. Du skal nu skylle MySQL-privilegier.
- Klik på fanen SQL igen
- Typ eller indsæt i feltet SQL-forespørgsel:
FLUSH PRIVILEGES;
- Klik på Gå for at køre forespørgslen.
Du skulle nu være i stand til at logge på eksternt.
Lad mig vide, om dette hjalp. Følg mig på Twitter, Facebook og YouTube, eller 🍊 køb mig en smoothie.
p.s. Jeg øgede mine AdSense-indtægter med 200 % ved hjælp af AI 🤖. Læs min Ezoic anmeldelse for at finde ud af hvordan.