Próbuję utworzyć użytkownika MySQL, który będzie mógł łączyć się z bazą danych MySQL tylko z określonej nazwy hosta.
nadaj wszystko na db_name. * do „nazwa_użytkownika ”@'appserver-lan.mydomain.com” identyfikowany przez „some_passwd”
Sprawdzając tabelę użytkowników w bazie danych mysql, widzę, że użytkownik został pomyślnie utworzony:
użyj mysql; wybierz * od użytkownika, gdzie Użytkownik = „nazwa_użytkownika”, a Host = „appserver-lan.mydomain.com”
lub
pokaż granty dla „nazwa użytkownika ”@'appserver-lan.mydomain.com”
Podana nazwa hosta jest aliasem nazwy amazon-ec2, która po rozpoznaniu przez serwery DNS AWS skutkuje adresem LAN:
[root @ db_server ~] # host appserver-lan.mydomain.com
appserver-lan.mydomain.com to alias ec2-xxx-xxx-xxx-xxx.compute-1.amazonaws.com ec2-xxx-xxx-xxx-xxx.compute-1.amazonaws.com ma adres 10.xxx .xxx.xxx
Problem polega na tym, że kiedy próbuję połączyć się z bazą danych LAN IP z tego serwera appserver-lan, pojawia się błąd odmowy dostępu, chociaż hasło jest prawidłowe. Dziwne jest to, że nazwa hosta wyświetlana w błędzie nie jest nazwą hosta, którą podałem podczas tworzenia użytkownika:
BŁĄD 1045 (28000): Odmowa dostępu dla użytkownika „nazwa_użytkownika” @ „ appserver.mydomain.com ” (przy użyciu hasła: TAK)
Moje pytanie brzmi: w jaki sposób mysql określa nazwę hosta klienta? Wierzę, że nie robi tego przez odwrotne wyszukiwanie DNS, ponieważ sprawdziłem i nie wskazuje on „appserver.mydomain.com” ani „appserver-lan.mydomain.com”. Ponadto serwer db nie ma wpisów związanych z serwerem aplikacji na / etc / hosts.
Podsumowując, jestem prawie pewien, że jest to problem z rozpoznawaniem nazwy hosta, ponieważ nadawanie uprawnień dla hosta „%” lub adresu IP sieci LAN działa dobrze.
Jakieś pomysły na to, czego mi brakuje?
host -t PTR 10.1.2.3
?