Итак, у меня проблема при попытке поговорить с удаленным сервером MySQL, который находится на хосте Digital Ocean (Ubuntu). Другой мой хост находится на IPOWER, но их возможности SQL не так хороши, поэтому я хотел, чтобы мои файлы PHP на IPOWER общались с моей базой данных MySQL в Digital Ocean.
Я все время получаю сообщение об ошибке: «В соединении отказано».
Вот как это выглядит со стороны IPOWER:
mysqli_connect('$myDigitalOceanIP', '$myUserName', '$myPassword', 'database', '3306');
Что касается Digital Ocean, я сделал следующее:
Сняли ограничения брандмауэра и IPTables на порт 3306
Создал нового пользователя в MySQL, который выполняет совместимость с $ myUserName с разрешениями Select, Insert и Update, который может подключаться с любого IP-адреса.
Сброшены привилегии в консоли MySQL и перезапущены службы MySQL и Apache
Подтверждено, что MySQL прослушивает порт 3306.
Отредактировал файл my.cnf так, чтобы bind-address
закомментирован, чтобы можно было принимать соединения за пределами локального хоста.
При всем этом я все еще получаю отказ в соединении. Пожалуйста, подбросьте мне дополнительные предложения!
Кроме того, есть ли журнал ошибок, который я должен просмотреть? Журналы доступа и ошибок Apache ничего мне не дали, и я не смог найти журнал ошибок SQL. Надо ли как-то включать?
Оказывается я был все делал правильно, проблема была на стороне IPOWER. У меня был друг удаленно подключился к SQL-серверу в Digital Ocean, и он сделал это за пять секунд.
Урок здесь в том, что не позволяйте клиенту выбирать хост и не используйте дрянной хост, такой как IPOWER, который предлагает вам перейти на более раннюю версию PHP и беспричинно мешает вашим удаленным соединениям.
Выполнение шагов, описанных в вопросе, должно решить эту проблему для всех в будущем, если они будут использовать хосты, которые позволяют им самостоятельно настраивать параметры и не пытаются намеренно с ними связываться.