Gostitelj 'xxx.xx.xxx.xxx' se ne sme povezati s tem strežnikom MySQL

To bi moralo biti zelo preprosto, vendar tega ne morem narediti za nobeno ceno.
Poskušam se samo na daljavo povezati s strežnikom MySQL.

povezovanje kot

mysql -u root -h localhost -p  

deluje v redu, če pa poskusite

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

ne uspe z napako

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

V preglednici mysql.user je za uporabnika 'root' z gostiteljem 'localhost' popolnoma enak vnos kot za drugega z gostiteljem '%'.

Sem na koncu z razumom in nimam pojma, kako naj nadaljujem. Vse ideje so dobrodošle.

Rešitev

Morda gre za varnostni ukrep. Lahko poskusite dodati nov skrbniški račun:

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;

Čeprav, kot so opozorili Pascal in drugi, ni najboljša ideja, da bi imel uporabnik s takšnim dostopom dostop do katerega koli IP. Če potrebujete upraviteljskega uporabnika, uporabite root in ga pustite na localhostu. Za vsa druga dejanja natančno določite privilegije, ki jih potrebujete, in omejite dostopnost uporabnika, kot predlaga Pascal v nadaljevanju.

Uredi:

Iz pogosto zastavljenih vprašanj o MySQL:

Če ne morete ugotoviti, zakaj ste dobili

Dostop zavrnjen, odstranite iz uporabnika tabele vse vnose, ki imajo Host vrednosti, ki vsebujejo nadomestne znake (vnosi ki vsebujejo znake '%' ali '_'). A zelo pogosta napaka je vstavljanje novega vnos z Host='%' in User='some_user', misleč, da je to vam omogoča, da določite lokalnega gostitelja za se lahko povežete z istega računalnika. Na spletni strani razlog, da to ne deluje, je, da privzeti privilegiji vključujejo vnos z Host='localhost' in User=''. Ker ima ta vnos Host vrednost 'localhost', ki je bolj bolj specifična kot '%', se uporablja v prednost pred novim vnosom, ko povezovanje iz lokalnega gostitelja! Pravilna vrednost postopek je vstaviti drugi vnos z Host='localhost' in User='some_user', ali pa izbrišite vnos z Host='localhost' in User=''. Po izbrisu vnosa, ne pozabite izdati ukaz FLUSH PRIVILEGES ukaz, da ponovno naložite tabele dodelitev. Glej tudi razdelek 5.4.4, "Dostop Nadzor, Faza 1: Povezava preverjanje".

Komentarji (8)

Sporočilo *Host ''xxx.xx.xxx.xxx'' ni dovoljeno vzpostaviti povezave s tem strežnikom MySQL je odgovor strežnika MySQL odjemalcu MySQL. Opazite, da vrača naslov IP in ne imena gostitelja.

Če se poskušate povezati z mysql -h -u -p in vam vrne to sporočilo z naslovom IP, potem strežnik MySQL ne more opraviti povratnega iskanja na odjemalcu. To je ključnega pomena, ker tako prikaže odjemalca MySQL na nepovratna sredstva.

Prepričajte se, da lahko izvedete nslookup OD strežnika MySQL. Če to ne deluje, potem v strežniku DNS ni nobenega vnosa. Lahko pa vnesete vnos v datoteko HOSTS strežnika MySQL (` `

Komentarji (1)

Če tabele z dodeljenimi sredstvi spreminjate ročno (z INSERT, UPDATE itd.), morate izvesti ukaz FLUSH PRIVILEGES, s katerim strežniku naročite, naj ponovno naloži tabele z dodeljenimi pravicami.

PS: Ne priporočam, da kateremu koli gostitelju dovolite povezavo za katerega koli uporabnika (zlasti ne za uporabo root). Če uporabljate mysql za aplikacijo odjemalec/strežnik, raje uporabite naslov podomrežja. Če uporabljate mysql s spletnim strežnikom ali aplikacijskim strežnikom, uporabite posebne naslove IP.

Komentarji (0)