Host 'xxx.xx.xxx.xxx' is niet toegestaan om verbinding te maken met deze MySQL server

Dit zou doodsimpel moeten zijn, maar ik krijg het maar niet aan de praat.
Ik probeer alleen maar om op afstand verbinding te maken met mijn MySQL server.

verbinden als

mysql -u root -h localhost -p  

werkt prima, maar als ik probeer

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

mislukt met de foutmelding

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

In de mysql.user tabel is er precies dezelfde regel voor gebruiker 'root' met host 'localhost' als een andere met host '%'.

Ik'ben ten einde raad en heb geen idee hoe ik verder moet. Alle ideeën zijn welkom.

Oplossing

Mogelijk een veiligheidsmaatregel. Je zou kunnen proberen een nieuwe administrator account toe te voegen:

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;

Alhoewel zoals Pascal en anderen hebben opgemerkt is het geen goed idee om een gebruiker met dit soort toegang open te hebben voor elk IP. Als je een administratieve gebruiker nodig hebt, gebruik dan root, en laat die op localhost. Specificeer voor elke andere actie precies de rechten die je nodig hebt en beperk de toegang van de gebruiker zoals Pascal hieronder heeft voorgesteld.

Bewerken:

Van de MySQL FAQ:

Als u niet kunt achterhalen waarom u Toegang geweigerd, verwijder uit de gebruiker tabel alle entries die Host waarden die wildcards bevatten (entries die '%' of '_' tekens bevatten). A veel voorkomende fout is het invoegen van een nieuwe entry met Host='%' en User='some_user', denkend dat dit u toelaat om localhost te specificeren om verbinding te maken vanaf dezelfde machine. De reden dat dit niet werkt is dat de standaard privileges een entry met Host='localhost' en User=''. Omdat die entry een Host waarde 'localhost' heeft die meer specifieker is dan '%', wordt het gebruikt in voorkeur boven de nieuwe entry wanneer verbinding maken vanaf localhost! De juiste procedure is om een tweede entry in te voegen met Host='localhost' en User='some_user', of om de vermelding met Host='localhost' en User=''. Na het verwijderen van de entry, vergeet niet om een FLUSH PRIVILEGES statement uit te geven om de toekennings tabellen opnieuw te laden. Zie ook Paragraaf 5.4.4, "Toegang Controle, Fase 1: Verbinding Verificatie".

Commentaren (8)

Het bericht *Host ''xxx.xx.xxx.xxx'' is niet toegestaan om verbinding te maken met deze MySQL server is een antwoord van de MySQL server aan de MySQL client. Merk op hoe het het IP adres terugstuurt en niet de hostnaam.

Als je probeert te verbinden met mysql -h -u -p en het geeft dit bericht terug met het IP adres, dan is de MySQL server niet in staat om een reverse lookup te doen op de client. Dit is kritisch omdat dat is hoe de MySQL client aan de Grants wordt gekoppeld.

Zorg ervoor dat u een nslookup kunt doen vanaf de MySQL server. Als dat niet werkt, dan is er geen entry in de DNS server. Als alternatief kun je een entry in de MySQL server's HOSTS file zetten (` `

Commentaren (1)

Als u de toekentabellen handmatig wijzigt (met INSERT, UPDATE, enz.), moet u een FLUSH PRIVILEGES statement uitvoeren om de server te vertellen dat hij de toekennings tabellen opnieuw moet laden.

PS: Ik zou niet aanraden om elke host toe te staan om verbinding te maken voor elke gebruiker (vooral niet de root gebruiken). Als je mysql gebruikt voor een client/server toepassing, geef dan de voorkeur aan een subnet adres. Als je mysql gebruikt met een web server of applicatie server, gebruik dan specifieke IPs.

Commentaren (0)