Host 'xxx.xx.xxx.xxx' har ikke tillatelse til å koble til denne MySQL-serveren

Dette burde være helt enkelt, men jeg får det ikke til å fungere.
Jeg prøver bare å koble eksternt til MySQL-serveren min.

koble til som

mysql -u root -h localhost -p  

fungerer bra, men prøver

mysql -u root -h 'any ip address here' -p

mislykkes med feilen

ERROR 1130 (00000): Host ''xxx.xx.xxx.xxx'' is not allowed to connect to this MySQL server

I tabellen mysql.user er det nøyaktig samme oppføring for bruker 'root' med host 'localhost' som en annen med host '%'.

Jeg er helt i villrede, og aner ikke hvordan jeg skal gå frem. Eventuelle ideer er velkomne.

Løsning

Muligens en sikkerhetsforanstaltning. Du kan prøve å legge til en ny administratorkonto:

mysql> CREATE USER 'monty'@'localhost' IDENTIFIED BY 'some_pass';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'monty'@'localhost'
    ->     WITH GRANT OPTION;
mysql> CREATE USER 'monty'@'%' IDENTIFIED BY 'some_pass';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'monty'@'%'
    ->     WITH GRANT OPTION;

Selv om Pascal og andre har bemerket at det ikke er en god idé å ha en bruker med denne typen tilgang åpen for enhver IP. Hvis du trenger en administrativ bruker, bruk root, og la den være på localhost. For enhver annen handling, spesifiser nøyaktig de rettighetene du trenger, og begrens brukerens tilgjengelighet slik Pascal har foreslått nedenfor.

Rediger:

Fra vanlige spørsmål om MySQL:

Hvis du ikke kan finne ut hvorfor du får Tilgang nektet, fjern fra brukeren tabellen alle oppføringer som har Host verdier som inneholder jokertegn (oppføringer som inneholder '%' eller '_' tegn). A svært vanlig feil er å sette inn en ny oppføring med Host='%' og User='some_user', i den tro at denne lar deg spesifisere localhost til å koble til fra samme maskin. Den grunnen til at dette ikke fungerer er at standardrettighetene inkluderer en oppføring med Host='localhost' og User=''. Fordi den oppføringen har en Host verdien 'localhost' som er mer spesifikk enn '%', brukes den i preferanse til den nye oppføringen når tilkobling fra localhost! Den riktige prosedyre er å sette inn en ny oppføring med Host='localhost' og User='some_user', eller å slette oppføringen oppføringen med Host='localhost' og User=''. Etter at du har slettet oppføringen, må du huske å utstede en FLUSH PRIVILEGES statement for å laste inn tilskuddstabellene på nytt. Se også avsnitt 5.4.4, "Tilgang". Kontroll, trinn 1: Tilkobling Verifisering".

Kommentarer (8)

Meldingen *Host ''xxx.xx.xxx.xxx'' is not allowed to connect to this MySQL server er et svar fra MySQL-serveren til MySQL-klienten. Legg merke til at den returnerer IP-adressen og ikke vertsnavnet.

Hvis du prøver å koble til med mysql -h < vertsnavn > -u < noen > -p og den returnerer denne meldingen med IP-adressen, er MySQL-serveren ikke i stand til å gjøre et omvendt oppslag på klienten. Dette er kritisk fordi det er slik den tilordner MySQL-klienten til tilskuddene.

Forsikre deg om at du kan gjøre et nslookup FRA MySQL-serveren. Hvis det ikke fungerer, er det ingen oppføring på DNS-serveren. Alternativt kan du legge inn en oppføring i MySQL-serverens HOSTS-fil (` `

Kommentarer (1)

Hvis du endrer tilskuddstabellene manuelt (ved hjelp av INSERT, UPDATE osv.), bør du utføre følgende kommandoer en FLUSH PRIVILEGES-setning for å be serveren om å laste inn tilskuddstabellene på nytt.

PS: Jeg vil ikke anbefale å tillate hvilken som helst vert å koble til for hvilken som helst bruker (spesielt ikke root bruk). Hvis du bruker mysql for en klient / server-applikasjon, foretrekker du en subnettadresse. Hvis du bruker mysql med en webserver eller applikasjonsserver, bruk spesifikke IP-adresser.

Kommentarer (0)