Не удается подключиться к серверу MySQL по ‘ipaddress’ (4) (2003)

#mysql #remote-access

#mysql #удаленный доступ

Вопрос:

 $mysql_host    = "myipaddress";
$mysql_user    = "user";
$mysql_pass    = "password";
$mysql_db      = "mydb";   

 $con = mysqli_connect($mysql_host, $mysql_user, $mysql_pass, $mysql_db);

// Check connection
if(mysqli_connect_errno()) {
   echo "Failed to connect to MySQL: " . mysqli_connect_errno() ." ". mysqli_connect_error();
}
  

Я также использую PhpStorm и использую те же конфигурации (ipaddress не localhost), которые он подключает к базе данных (база данных находится в моей локальной системе; phpmyadmin).

Я использую phpmyadmin локально. Я также могу подключиться, используя их интерфейс и локальный хост. в PhpStorm я настроил локальное И удаленное соединение. Локальный использует localhost, а удаленный использует IP-адрес my systems за пределами мира. Я могу получить доступ к БД, используя оба метода внутри PhpStorm.

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

Когда я пытаюсь выполнить пинг 3306 через telnet (win7), я получаю текстовый текст и «Получил пакеты не в порядке.. Соединение с хостом потеряно «. Снова используя ту же информацию, я могу подключиться с помощью phpstorm. Что с этим?

Ответ №1:

Что ж, есть несколько вещей, которые вы, возможно, захотите проверить.

  1. Скорее всего, ваш брандмауэр фильтрует внешние подключения к порту 3306. PhpStorm и phpMyAdmin подключаются нормально, потому что они работают на одном компьютере.
  2. Проверьте, действительно ли ваш сервер MySQL прослушивает соединение с вашим реальным IP. Он может прослушиваться только на локальном хосте.
  3. Если вы находитесь за маршрутизатором, вам необходимо перенаправить 3306 на ваш фактический компьютер, на котором запущен сервер MySQL.