2014-11-12 2 views
0

У меня возникла проблема с подключением к удаленному серверу MySQL, который размещен Amazon Web Services. Я могу подключиться к этому серверу MySQL практически с любого другого компьютера, но по какой-то причине я не могу заставить его втягиваться в мой PHP, размещенный на GoDaddy.Подключение к удаленному AWS MySQL из GoDaddy через PHP

Вот PHP код:

$cxn = mysql_connect($host,$user,$passwd,$dbname) 
     or die("Query died: Cannot connect."); 

Я добавил имя хоста для сервера MySQL в CPANEL GoDaddy в> хостов удаленного доступа MySQL. Я знаю, что переменные правильные, потому что я тестировал это на другом сервере, и все работает нормально.

Я уже два раза разговаривал с GoDaddy, и все, что они сказали, это попробовать просить форум (помимо добавления хоста MySQL к странице хостов удаленного доступа).

Я проверил группу безопасности для AWS MySQL и убедился, что она открыта для принимающей IP-адреса GoDaddy в ...

Я просто не знаю, что еще сделать! Почему это не работает на сервере GoDaddy, когда он работал отлично?

MySQL v5.6 -> на AWS PHP v5.4 -> на GoDaddy

+0

Это действительно очень плохая идея, чтобы ваш PHP на GoDaddy и ваша БД на AWS. Задержка будет убивать ваш сайт с любым значительным количеством запросов на странице. – ceejayoz

+0

В CPANEL вы указываете GoDaddy, какие внешние машины могут получить доступ к вашим базам данных MySQL, размещенным в GoDaddy. Но вы пытаетесь получить доступ к внешнему хосту MySQL из GoDaddy. Мне кажется, что GoDaddy имеет брандмауэр в масштабе всей сети, блокирующий исходящие запросы на порт 3306, порт MySQL. Уверен, что сторонники поддержки GoDaddy на фронте не имеют понятия об этом; вам нужно будет увеличить свой билет до сетевых операций, если вы сможете убедить их сделать это. –

+0

Каково значение, возвращаемое 'mysql_error()' при сбое запроса на соединение? Как долго выполняется запрос на подключение до его сбоя (выполняется ли тайм-аут или запрос на соединение, отклоненный машиной дальнего конца)? –

ответ

0

На основе информации, содержащейся в вопросе, и замечания, то ясно, что команда сетевых операций GoDaddy не позволяет исходящие запросы TCP-соединения на порт 3306 (это порт по умолчанию MySQL).

Это означает, что вы не можете установить соединение с программой, запущенной на сервере GoDaddy, на сервер MySQL, расположенный в другом месте. Если вы это сделаете, он остановится до истечения тайм-аута соединения TCP.

Что вы можете сделать по этому поводу?

  1. Попросите их разрешить отправку 3306 трафика. (Вероятно, я подозреваю, что их бизнес-модель не позволяет много работать в сети для каждого клиента.)
  2. Попробуйте подключить свой сервер MySQL к другому порту, возможно, 8000. 8080 или другому широко используемому «альтернативные» http-порты. Они не могут быть заблокированы. Затем используйте

    mysql_connect ("$ HOST: $ порт", $ USER, $ PASSWD, $ DbName)

для подключения.

Вам нужно будет узнать, как заставить сервер AWS-резидентов MySQL прослушивать нестандартный порт.

+0

Спасибо за отличную информацию, @Ollie Jones! После больших усилий я попытался перенастроить сервер MySQL MySQL с поддержкой AWS для прослушивания на другом порту, но больше не мог тратить время. Вместо этого я решил просто разделить мою базу данных пополам и соответствующие части сайта на GoDaddy CPANEL. Кажется, что GoDaddy довольно непреклонно относится к тому, что у вас есть все ваши системы - они не любят хорошо играть с другими. В любом случае, как только будет заключен контракт на хостинг GoDaddy, я, вероятно, просто разместил сайт на сервере EC2. –

Смежные вопросы