Обновление PHP 5.3 — Не удается подключиться к серверу MySQL

#php #mysql

#php #mysql — сервер

Вопрос:

Сегодня я провел небольшое исследование по этому вопросу, но, похоже, ничто не решает эту проблему. Недавно я обновился до PHP 5.3.3 с версии 5.1.6, а также обновил MySQL до версии 5.5 с версии 5.0. После этого следующий код выдает ошибку «Не удается подключиться к базе данных mysql»:

 $connection =  mysql_pconnect($dbhost, $dbusername, $dbpassword);
if (!$connection) {
  //Can't connect
  die('Could not connect: ' . mysql_error());
  return;
}
  

И получаю следующую ошибку:

Предупреждение: mysql_connect(): не удается подключиться к серверу MySQL на ‘199.59.157.103’ (13) в /var/www/html/ws/Cust/customerWS_1_1.php в строке 19 не удалось подключиться: Не удается подключиться к серверу MySQL на ‘199.59.157.103’ (13)

Я могу подключиться к удаленному хосту через командную строку и перепробовал все, от сброса пароля до закрытия таблиц IP. Я в некотором роде в растерянности, поэтому буду признателен за любую помощь.

Ответ №1:

У нас была похожая проблема с тем же сообщением об ошибке «Не удается подключиться к базе данных mysql«, и, возможно, следующие пункты также будут полезны:

  • проверьте привилегии пользователя mysql (в нашем случае и при внешних подключениях у нас был старый IP-адрес сервера (разрешить доступ) в таблице) GRANT ALL PRIVILEGES ON tablename.* TO 'username'@'145.1.1.2'; -> перезагрузить привилегии после изменений ( FLUSH PRIVILEGES; )

  • отключите параметр SELinux. В новых версиях Plesk (> 10?) Это будет установлено включенным автоматически… —> в /etc/selinux/config измените строку с надписью:

    SELINUX=enforcing чтобы SELINUX=disabled увидеть более подробную информацию: http://googolflex.com/?p=482

Ответ №2:

Существует ограничение драйвера PHP 5.3 mysql, связанное с хэшем старой схемы аутентификации, сохраненным в базе данных предыдущим сервером mysql. Это может вызвать проблему с сохраненными паролями, поэтому базы данных будут недоступны со старыми паролями.

Чтобы решить проблему, вы должны воссоздать пользователей mysql с тем же логином и тем же паролем.

Ответ №3:

Когда вы говорите «Я могу подключиться к удаленному хосту через командную строку», вы имеете в виду, что вы подключаетесь к серверу MySQL УДАЛЕННО? Или что вы отправляете SSHing на свой сервер MySQL и подключаетесь к нему из командной строки сервера MySQL? Если последнее, возможно, что при обновлении до MySQL 5.5 вы случайно остановили MySQL от привязки / прослушивания на общедоступном IP. Проверьте свой my.cnf .

В противном случае: выполняется ли ваш PHP-код на том же сервере, что и ваш сервер MySQL? Вполне возможно, что ваши разрешения могут быть отключены. Разрешения MySQL очень специфичны при подключении к серверу MySQL через его IP-адрес, если клиент имеет доступ к подключению только с ‘localhost’, и наоборот.

Комментарии:

1. Когда я говорю удаленное подключение — я имею в виду, что с сервера, на котором размещен мой веб-контент, я могу подключиться, используя mysql -h <remote_host_ip>. Если бы это была проблема с неправильным прослушиванием MySQL, она вообще не должна была разрешать какие-либо удаленные подключения, верно?

2. Правильно. Когда вы подключаетесь из командной строки, используете ли вы те же имя пользователя и пароль, которые пытается использовать ваш скрипт?

3. ДА. Даже если я жестко запрограммирую информацию о соединении, я все равно получу ту же ошибку. Проверка таких обыденных вещей, как эта, обычно является первым, что я делаю, прежде чем обращаться к facepalm 🙂

4. просто в качестве теста… что, если ты mysql_connect вместо mysql_pconnect этого?

5. ): Есть ли у вас другой сервер MySQL, который вы можете протестировать? Это неприлично странная проблема.

Ответ №4:

Сначала вы должны убедиться, что параметры подключения $dbhost , $dbusername и $dbpassword указаны правильно. Предполагая, что это правильно, вам следует проверить настройки mysql ini. Я бы предположил, что адрес привязки установлен на 127.0.0.1 или localhost, но не на общедоступный IP-адрес.

Также обратите внимание, что это угроза безопасности, если вы можете подключиться к mysql с общедоступного IP-адреса. Возможно, вы захотите поискать решение, которое не требует такого подключения.