Здравствуйте, возникла проблема.
При подключении к MySQL через PDO с таким кодом:
$dbhost='123.123.123.123';
$user='username';
$pass='password';
try {
$dbh = new PDO("mysql:host=".$dbhost.";dbname=newdb", $user, $pass);
}
catch (PDOException $e) {
print "Error!: " . $e->getMessage() . "<br/>";
die();
}
Возникают проблемы в виде исключения:
Error!: SQLSTATE[HY000] [2002] Попытка установить соединение была безуспешной, т.к. от другого компьютера за требуемое время не получен нужный отклик, или было разорвано уже установленное соединение из-за неверного отклика уже подключенного компьютера.
Однако, если задать адрес хоста без переменной, напрямую:
$dbh = new PDO("mysql:host=123.123.123.123;dbname=newdb", $user, $pass);
подключение проходит отлично.
Сначала подозрение пало на формирование строки и обработку переменной в ней, но, если сделать
var_dump("mysql:host=".$dbhost.";dbname=newdb");
никаких проблем не возникает и ip адрес находится на месте.
Далее я выяснил, что мой проблемный код с легкостью подключается к другому mysql серверу с другим ip. Т.е. из этого следует, что проблема локализована на моём MySQL сервере.
Пользователь на сервере существует, обладает достаточными правами и ему разрешён доступ с любого ip. О чем говорит тот факт, что при прямом указании ip адреса сервера соединение спокойно происходит и PDO без проблем работает с базой.
Однако в моей ситуации требуется указание адреса сервера через переменную, чего я, к сожалению, никак добиться не могу и вынужден просить вас о помощи.
Быть может есть какие-то настройки безопасности сервера, которые не позволяют ему принимать сгенерированную строку, или я что-то где-то проглядел?