Подключение сайта к локальному серверу MySQL - PullRequest
1 голос
/ 15 июня 2011

Я недавно настроил сервер MySQL на домашнем компьютере с Windows. Кроме того, я также создал сайт, используя 0fees.net - бесплатный хостинг-провайдер, который поставляется с панелью Vista, которая имеет различные сервисы, включая поддержку PHP, FTP-хостинг файлов, собственный сервер MySQL и т. Д.

Для этого сайта я создал PHP-скрипт «login», чтобы люди могли войти на мою веб-страницу. Однако вместо чтения из базы данных MySQL, предоставленной мне на cPanel на 0fees.net, я хочу, чтобы скрипт входа в PHP выполнял чтение непосредственно с сервера MySQL, который я настроил на своем домашнем компьютере. Для этого я предпринял несколько шагов:

1) Настроил MySQL с помощью мастера настройки экземпляра MySQL Server

В этой конфигурации я включил сеть TCP / IP на порту 3306 (и включил исключение брандмауэра для этого порта) и включил корневой доступ с удаленных компьютеров.

2) В клиенте командной строки MySQL я предоставил возможности удаленного доступа другим устройствам с помощью:

    GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password';

3) Я перенаправил порт 3306 на мой маршрутизатор (и использовал различные средства проверки портов, чтобы убедиться, что он открыт) * ​​1012 *

4) Я создал скрипт входа в систему с именем login.php, который находится в каталоге моего сайта .htdocs и обрабатывает форму входа в формате HTML на домашней странице моего сайта. Он пытается (и не удается) подключиться к моему локальному серверу MySQL. Интересующий вас сценарий php:

    $host="my_external_ip:3306"; // External IP of my computer and port to listen on
    $username="root"; // Username specified in the GRANT command-line-client command
    $password="password"; // Password specified in the GRANT command-line-client command
    $db_name="logon"; // MySQL database name
    $tbl_name="accounts"; // Table name within the database

    // Connect to server and select databse.
    mysql_connect("$host", "$username", "$password")or die(mysql_error());
    mysql_select_db("$db_name")or die("cannot select DB");

При попытке подключиться к серверу MySQL я получаю сообщение об ошибке:

Can't connect to MySQL server on 'my_external_ip' (4).

Следует также отметить, что я успешно могу подключиться к своему локальному серверу MySQL удаленно с других машин, которые находятся в других интернет-сетях (протестировано с Navicat), используя этот же внешний IP-адрес на порту 3306. Любые идеи относительно того, почему мой сайт также не может подключиться?

Заранее спасибо за любые идеи.

Ответы [ 3 ]

3 голосов
/ 15 июня 2011

Поскольку я могу сказать, что ваш сервер определенно работает (и виден из интернета в целом), существует несколько возможностей:

  1. Вы забыли запустить FLUSH PRIVILEGES
  2. Ваш логин или пароль неверны
  3. Ваш бесплатный хост-провайдер блокирует соединение

Мои деньги на # 3, есть много стимулов для этого.

0 голосов
/ 17 ноября 2012

Хорошо, я расскажу вам о небольшом уловке, который я узнал, все, что вам нужно сделать, это перейти на wamp>mysql>my.ini и заменить все 3306 на 3305, затем сохранить, а затем применить это к брандмауэру и порту вперед 3305.Затем, когда вы подключаетесь удаленно, просто выполните

mysql_connect("ip adress:3305", "username", "password");

. Я проверил это, и это работает, потому что сайты веб-хостинга блокируют входящий трафик с порта 3306.

0 голосов
/ 15 июня 2011

@ Крис упомянул, что ваш провайдер может блокировать исходящие запросы на порт 3306. Вот быстрый способ проверить, так ли это, и обойти его:

  1. Настройте маршрутизатор на портПерейдите от порта 80 на маршрутизаторе к порту 3306 на вашем компьютере.Это позволит вам подключаться к MySQL из-за пределов вашей сети через порт 80 вместо порта 3306.

  2. Измените код PHP для подключения к вашему IP-адресу через порт 80 вместо 3306.

Ваш хостинг-провайдер может заблокировать исходящий порт 3306, но почти наверняка не будет блокировать запросы на исходящий порт 80 (многие используют CURL или веб-службы и т. Д.).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...