Я пытаюсь подключиться к внешней базе данных с помощью PDO.
$dbh = new PDO('mysql:host=hotsname;port=3309;dbname=dbname', 'root', 'root');
Однако это не работает на одном конкретном сервере, который у меня есть.
Я подумал, что возможно только определенный хост был разрешен, но я проверил правила mysql, а также пробовал этот код на сервере, который у меня есть лично, и соединение работает.
Поэтому я знаю, что код работает и что их нет на моей стороне и что брандмауэр принимает запросы на порт 3309 и передает его на правильный сервер на порт 3306.
Таким образом, проблема заключается исключительно на одном сервере. В качестве теста я решил открыть порт 3306 для проверки кода без указания порта.
$dbh = new PDO('mysql:host=hotsname;dbname=dbname', 'root', 'root');
Это сработало сразу.
Поэтому мой вопрос: почему при добавлении порта это не позволяет подключиться к базе данных. Эта проблема имеет только этот конкретный сервер.
Большое спасибо за ваше время.
Обновить
Указанная ошибка просто «Не удается подключиться к серверу mysql на xxx.xxx.xxx.xxx».
Я получил немного дальше. Код теперь работает, и у меня есть правило брандмауэра, позволяющее принимать на 3306 серверу с использованием 3306. Таким образом, хотя я указал порт, он, кажется, игнорирует это и заставляет его выйти из 3306.
Вероятно, вы используете localhost
как имя хоста. Вместо этого переключение на 127.0.0.1
должно решить проблему незнания порта.
Проблема закончилась в связи с хостом. Весь трафик был вытеснен на 3306 независимо от порта, указанного в коде.