MySQL FEIL 1045 (28000): Tilgang nektet for bruker 'bill'@'localhost' (bruker passord: YES)
La meg først nevne at jeg har gått gjennom mange foreslåtte spørsmål og ikke funnet noe relevant svar. Her er hva jeg gjør.
Jeg er koblet til Amazon EC2-forekomsten min. Jeg kan logge inn med MySQL root med denne kommandoen:
mysql -u root -p
Deretter opprettet jeg en ny brukerregning med vert% ...
CREATE USER 'bill'@'%' IDENTIFIED BY 'passpass';
Gitt alle rettighetene til brukerregning:
grant all privileges on *.* to 'bill'@'%' with grant option;
Så avslutter jeg fra root-bruker og prøver å logge inn med bill:
mysql -u bill -p
skrev inn riktig passord og fikk denne feilen:
ERROR 1045 (28000): Tilgang nektet for brukeren 'bill'@'localhost' (bruker passord: YES)
397
3
Da du løp
og fikk denne feilen
mysqld forventer at du kobler til som
bill@localhost
.Prøv å opprette
bill@localhost
Hvis du vil koble til eksternt, må du angi enten DNS-navnet, den offentlige IP-en eller 127.0.0.1 ved hjelp av TCP/IP:
Når du har logget inn, kan du kjøre dette
USER() rapporterer hvordan du forsøkte å autentisere deg i MySQL.
CURRENT_USER() rapporterer hvordan du fikk tillatelse til å autentisere i MySQL fra tabellen mysql.user.
Dette vil gi deg en bedre oversikt over hvordan og hvorfor du fikk lov til å logge på mysql. Hvorfor er denne visningen viktig å vite? Det har å gjøre med bestillingsprotokollen for brukerautentisering.
Her er et eksempel: Jeg vil opprette en anonym bruker på skrivebordet mitt MySQL
OK se meg logge inn som anonym bruker:
Autentiseringsrekkefølgen er svært streng. Den sjekker fra det mest spesifikke til det minste. Jeg skrev om denne autentiseringsstilen i DBA StackExchange.
Ikke glem å eksplisitt be om TCP som protokoll for mysql-klienten når det er nødvendig.
Når du skriver
mysql -u root -p
, kobler du til mysql-serveren via en lokal unix-socket.Men tilskuddet du ga,
'bill'@'%'
samsvarer bare med TCP / IP-tilkoblinger merkelig nok.Hvis du vil gi tilgang til den lokale unix-kontakten, må du gi privilegier til 'bill'@'localhost' , som merkelig nok ikke er det samme som 'bill'@'127.0.0.1'
Du kan også koble til ved hjelp av TCP/IP med mysql-kommandolinjeklienten, for å matche rettighetene du allerede har gitt, f.eks. kjøre
mysql -u root -p -h 192.168.1.123
eller hvilken lokal IP-adresse boksen din har.Ok, jeg er ikke sikker, men sannsynligvis er dette my.cnf-filen i mysql-installasjonskatalogen synderen. Kommenter ut denne linjen, og problemet kan være løst.