VaaL2004
@VaaL2004

Почему не получается подключиться к MySQL через PDO, когда хост БД указан в переменной?

Здравствуйте, возникла проблема.

При подключении к 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 без проблем работает с базой.

Однако в моей ситуации требуется указание адреса сервера через переменную, чего я, к сожалению, никак добиться не могу и вынужден просить вас о помощи.

Быть может есть какие-то настройки безопасности сервера, которые не позволяют ему принимать сгенерированную строку, или я что-то где-то проглядел?
  • Вопрос задан
  • 4819 просмотров
Решения вопроса 1
@Nc_Soft
снова в порядке бреда
$dbh = new PDO("mysql:host=$dbhost;dbname=newdb", $user, $password);
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
AMar4enko
@AMar4enko
А если попробовать сначала сгенерировать строку подключения, а потом уже ее в метод передать? Ну так, в порядке бреда.
Ответ написан
omun
@omun
А попробуйте сменить порт, допустим на 3307, и указывать его в строке подключения.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы