PHP не коннектится через TCP к MYSQL

aragorn

Новичок
PHP не коннектится через TCP к MYSQL

Привет всем. У меня проблема. :confused:

Пару дней назад, перестали работать все скрипты на сервере которые коннектились к мусклю. Без никакой ошибки, сервер просто ничего не возвращал, ни хидеров, ни ничего. Empty data.
Т.к. я ничего до этого не трогал, подумал что превышен какой-нибудь лимит. Полез из коммандной строки, там вылезла ошибка
Host 'host_name' is blocked because of many connection errors.
Unblock with 'mysqladmin flush-hosts'

Естесственно поискал в инете, сделал flush-hosts, увеличил значение max_connect_errors в my.ini, перезапустил мускль, и смог коннектится из коммандной строки.
Но скрипты все равно не работали.Я пытался коннектитья стандартно, те mysq_connect($host,$name,$password).
Но некоторые скрипты работали. Тут я заметил что работали только те которые коннектились к localhost а те которые к 127.0.0.1 нет. Если мне не изменяет память, localhost означает что пхп коннектится через юникс сокет, а 127.0.0.1 означает ТЦП.

Дальше, я вставил просто строку коннекта в пустой файл, и поппробовл и так и так, результат тот же, локалхост работает, 127.0.0.1 нет, апач не возвращает ничего. Потом я попробовал запустить этот файл из коммандной строки, те php -q file. Так работало все! А из браузера нет.
Я уже попробовал mysql_connect(123.123.123.123, или на реальный мускль на другом сервере, 10.10.1.30, результат тот же, те не возвращалась ошибка типа неправльный пароль, или коннект рефузед, он просто не мог открывать тцп коннект.
Ну и уже в 4 часа ночи (речь идет об около 500 сайтах) замучавшись понять чтонибудь, и вырвав все волосы, просто тупо заменил повсюду 127 на локалхост, чтоб хоть как нибудь работало. Но это конечно не решение.

Вот я хотел спростить, кто нибудь сталкивался с подобным? Есть идеи, решения, советы?

Повторяю что все работало и я ничего не менял, пшп и мускль настроенны правильно для работы, ошибок кроме той которую я решил небыло никаких ни в мускле, ни в пшп, ни в апаче. Файрволов стрвнных нету, тцп работает правильно, telnet 127.0.0.1 3306 отвечает, из пшп fsockopen ('127.0.0.1', 3306 отвечает. Увеличил разные макс_коннект, перезагрузил тачку (убив год аптайма :( ). Все безрезультатно.

Спасибо всем кто ответит.
 
Сначала включить отладку error_reporting = E_ALL, тогда php начнет ругатся, посмотреть mysql_error после плохого коннекта.

Может в my.ini вставили skip-networking, или полетели таблицы с привилегиями, тогда просто нет полномочий для [email protected] для конкретных баз
 

aragorn

Новичок
нету никакой ошибки. мускль и привилегии непричем, он просто не открывает коннект
 

aragorn

Новичок
Автор оригинала: kolobok
Код:
sockstat -l | grep 3306
netstat -al | grep 3306
В студию :)
sockstat это вроде фрибсд? :)

в любом случае вот нетстат

Код:
[root@aragorn ~]# netstat -al |grep mysql
tcp        0      0 *:mysql                     *:*                         LISTEN
unix  2      [ ACC ]     STREAM     LISTENING     564020 /var/lib/mysql/mysql.sock
unix  3      [ ]         STREAM     CONNECTED     9565175 /var/lib/mysql/mysql.sock
..... cut..............
unix  4      [ ]         STREAM     CONNECTED     9284988 /var/lib/mysql/mysql.sock
unix  3      [ ]         STREAM     CONNECTED     9284986 /var/lib/mysql/mysql.sock
но дело в том что я из коммандной строки коннектюсь.. Даже не знаю что думать.
Т.е., проблема вроде не в мускле, на коннекты отвечает, все ок.
Так же проблема не в пшп, php -q file опять же работает
Остается апач.. это вообще может быть такое чтоб из-за него скрипты не коннектились к базе?
 

Navarro

Новичок
1) 127.0.0.1- это адрес loopback интерфейса. Обычно используют именно его, но с тем же успехом подойдет любой адрес из сети 127.0.0.0/8
ifconfig -l0 - просмотреть адрес loopback
либо host localhost
Если выводит не 127.0.0.1, то вопрос ясен, просто изменили внутренний адрес.

2) Хотя скорее всего надо прочекать диски.
 

si

Administrator
а так конектится mysql_connect('/var/lib/mysql/mysql.sock',...) ?
 
Сверху