Niepoprawna nazwa hosta PHP

12

Mamy aplikację, która działa od około 2 lat bez żadnych problemów.

Dziś rano, kiedy wszedłem na stronę, pojawiał się błąd:

Session: connection failed

Sprawdziłem połączenia z bazą danych, sprawdziłem użytkownika, sprawdziłem granty dla użytkownika, wszystko wyglądało dobrze.

Utworzyłem stronę testową, korzystając z informacji o połączeniu w pliku .inc.xml

Wystąpił błąd połączenia mysql.

To jest oryginalny plik:

   <TYPE>mysql</TYPE>
        <HOST>dbl</HOST>
        <USER>dbuser</USER>
        <PASSWORD key="PUT A KEY HERE TO DECRYPT THE PASSWORD">password</PASSWORD>

Nazwa hosta serwera to nie dbl

Zmieniłem drugą linię na następującą:

   <TYPE>mysql</TYPE>
        <HOST>localhost</HOST>
        <USER>dbuser</USER>
        <PASSWORD key="PUT A KEY HERE TO DECRYPT THE PASSWORD">password</PASSWORD>

Połączyło się dobrze.

Dokonano tej samej zmiany w oryginalnym pliku .inc.xml, a aplikacja została ponownie uruchomiona i działa poprawnie.

Moje pytania):

Sprawdziłem dzienniki kontroli, połączenia, zapytania, system nie był dostępny przez około 3 tygodnie.

Plik .inc.xml został ostatnio zmodyfikowany ponad rok temu.

Dlaczego aplikacja nagle przestaje brać dbl jako host?

Skąd wzięła się ta nazwa hosta dbl?

Układ systemu:

[root@acpr-web-x ~]# cat /proc/version
Linux version 2.6.32-358.2.1.el6.x86_64 ([email protected]) (gcc version 4.4.7 20120313 (Red Hat 4.4.7-3) (GCC) ) #1 SMP Wed Feb 20 12:17:37 EST 2013

[root@acpr-web-x ~]# httpd -v
Server version: Apache/2.2.15 (Unix)
Server built:   Aug 15 2014 03:02:07

[root@acpr-web-x ~]# php -v
PHP 5.3.3 (cli) (built: Oct 23 2014 06:58:46)
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies

Mysql Server version: 5.1.73-log Source distribution
Anthony Fornito
źródło

Odpowiedzi:

11

Moje pierwsze przypuszczenie to / etc / hosts, który może zastąpić DNS (jeśli istnieje dla hosta) i zastąpić prawie całkowicie forward DNS, gdy go brakuje. Z jakiegokolwiek powodu ten host (dbl) był w / etc / hosts, a potem nie był.

Po drugie, powiedzmy, że /etc/resolv.conf utracił opcję wyszukiwania dla domeny lokalnej, więc dbl.foo.com rozwiązuje problem, ale dbl nie ... również możliwości.

Jason Chodakowski
źródło
Po sprawdzeniu pliku / etc / hosts został on ostatnio zmodyfikowany 29.01.2015, a wpis dbl nadal tam wskazuje poprawny adres IP, /etc/resolv.conf ostatnio zmodyfikowany 11/8/2012 i wygląda poprawnie.
Anthony Fornito,
Ok, więc ... co powiesz na to? Od wewnątrz MySQL: use mysql; select user,host,password from userMoże to ujawnić zmianę na hoście, z której użytkownik „dbuser” może uzyskać dostęp do bazy danych. Potencjalne przyczyny są skończone, powinny być w stanie to ustalić. Rzuciłbym szybkie sprawdzenie na /etc/nsswitch.conf, ale ten plik jest trochę niejasny w dzisiejszych czasach, więc szanse na jego zmianę są niewielkie, ale warto to sprawdzić (kontroluje kolejność, w jakiej rzeczy się rozwiązują na system).
Jason Chodakowski