Подключение к удаленному серверу MySQL с помощью PHP


Я пытаюсь подключиться к удаленному серверу MySQL с виртуального хоста моей локальной машины, используя следующий код:

$conn = mysql_connect("$dbhost", "$dbuser", "$dbpass") or die(mysql_error());
        mysql_select_db($dbname, $conn) or die(mysql_error());

Моя проблема в том, что я не могу подключиться локально, получая сообщение об ошибке:

Не удается подключиться к серверу MySQL на 'xxx.xxx.xxx.xxx' (10060)

Это не тот случай, когда я загружаю один и тот же PHP-файл на сервер. Я могу запрашивать базу данных без каких-либо проблем.

Я также не могу подключиться через командную строку, но Я могу получить доступ к панели управления, которая исключает возможность случайного блокирования моего IP-адреса.

На моем локальном сервере работает PHP 5.2.9, на удаленном сервере 5.2.12

Author: OMG Ponies, 2009-12-20

4 answers

  • брандмауэр сервера должен быть настроен для включения входящих соединений на порту 3306
  • у вас должен быть пользователь в MySQL, которому разрешено подключаться с % (любого хоста) (подробнее см. руководство )

Текущая проблема - первая, но сразу после ее решения вы, скорее всего, получите вторую.

 17
Author: Bozho, 2009-12-20 09:03:56

Очень легко подключить удаленный сервер MySQL с помощью PHP, вам нужно сделать следующее:

  1. Создайте пользователя MySQL на удаленном сервере.

  2. Предоставьте Пользователю все права доступа.

  3. Подключитесь к Серверу с помощью PHP-кода (Пример Приведен ниже)

$link = mysql_connect('your_my_sql_servername or IP Address', 'new_user_which_u_created', 'password');
if (!$link) {
    die('Could not connect: ' . mysql_error());
}

echo 'Connected successfully';

mysql_select_db('sandsbtob',$link) or die ("could not open db".mysql_error());
// we connect to localhost at port 3306
 3
Author: Ajit Kumar KV, 2012-07-08 07:31:09

Я только что решил такую проблему. Что я узнал, так это:

  1. вам придется отредактировать my.cnf и установить bind-address = your.mysql.server.address в [mysqld]
  2. закомментируйте поле пропуска сети
  3. перезапустить mysqld
  4. Проверьте, работает ли он

    mysql -u root -h your.mysql.server.address –p 
    
  5. Создайте пользователя (usr или что-либо еще) с % в качестве домена и предоставьте ему доступ к соответствующей базе данных.

    mysql> CREATE USER 'usr'@'%' IDENTIFIED BY 'some_pass';
    mysql> GRANT ALL PRIVILEGES ON testDb.* TO 'monty'@'%' WITH GRANT OPTION;
    
  6. Откройте брандмауэр для порта 3306 (вы можете использовать iptables. убедитесь, что открыт порт для либо задумайтесь, либо, если вы находитесь в строгой безопасности, разрешите только адрес клиента)

  7. перезапустить брандмауэр/iptables

Теперь вы должны иметь возможность подключить сервер mysql из своего php-скрипта клиент-сервера.

 2
Author: Debmalya Sinha, 2012-07-08 07:29:48

Возможно, это не ответ на вопрос плаката.Но это может быть полезно людям, которые сталкиваются со мной в такой же ситуации:

У клиента есть две сетевые карты, беспроводная и обычная. Связь с сервером может быть успешной.Однако telnet serverAddress 3306 потерпит неудачу. И жаловался бы

Не удается подключиться к серверу MySQL на 'xxx.xxx.xxx.xxx' (10060)

При попытке подключиться к серверу.Поэтому я запретил обычные сетевые адаптеры. И попробовал telnet serverAddress 3306 это работает.И тогда это сработает при подключении к серверу MySQL.

 0
Author: Shihe Zhang, 2017-06-15 05:23:32