$con = mysqli_connect('<remote server ip address>','root','*******','CSV_DB',); if (!$con) { die('Could not connect: ' . mysqli_error($con)); } 
У меня есть простая программа для подключения к серверу mysql, который я создал с помощью phpmyadmin, однако я получаю сообщение «не могу подключиться» каждый раз, когда я пытаюсь подключиться.
Я знаю, что это может быть несколько разных проблем, но я действительно ищу советы по устранению неполадок.
Когда я ssh как root для сервера, я могу получить доступ к серверу с помощью терминала, и все в порядке. Однако это соединение, использующее одно и то же имя пользователя / пароль / db / etc, и я не могу войти в систему. Кроме того, mysqli_error никогда не печатает – не уверен, почему.
Вот быстрый быстрый контрольный список для включения удаленных подключений для MySQL, но сначала прочитайте (6). Если я что-то пропустил, не стесняйтесь редактировать.
  1) Ваш удаленный пользователь подключается через учетную запись, созданную с соответствующими user,host элементами (смотрите вывод от select user,host from mysql.user order by 1,2 ).  Если нет, загляните в команды CREATE USER и / или GRANT .  Изучите вывод из SHOW GRANTS для пользователя. 
  2) Вы сделали flush privileges;  (Некоторые говорят, что это не нужно, другие говорят, что это так). 
  3a) Найдите файл конфигурации mysql, C:\ProgramData\MySQL\MySQL Server 5.NNN 3b) ниже, просмотрев информацию в этом документе (или для Windows, вероятно, по пути C:\ProgramData\MySQL\MySQL Server 5.NNN ).  Это зависит от дистрибутива Linux. 
  3b) Вы изменили и сохранили my.ini (Windows) или my.cnf (Linux) и изменили bind-address от 127.0.0.1 или localhost , в пользу 0.0.0.0 .  И вы создали и rem'd из следующей строки: #skip-networking .  Он будет выглядеть примерно так: 
 [mysqld] bind-address=0.0.0.0 #skip-networking 
4) Перезапустите демон mysql. Как это зависит от дистрибутива.
  5) Проблемы с брандмауэром.  Убедитесь, что порт, по умолчанию 3306 , открыт для внешнего мира (что фактически может быть вашей интрасети).  Сюда входят любые другие уровни брандмауэров, такие как группы безопасности AWS EC2 или аналогичные, если таковые имеются. 
6) Понимать, что с этим связан риск безопасности. Если вы не знаете, как разоблачить ваш сервер mysql для удаленных подключений, не выполняйте это.
  7) Проводите частые оценки безопасности с помощью оператора select указанного в разделе 1. выше, включая просмотр SHOW GRANTS для этих пользователей.  Не перенагружайте пользователей с помощью шаблона без необходимости.  Скорее, предоставите пользователям минимальные привилегии для их выполнения. 
8) Часто проверяйте неудачные попытки подключения через общий журнал и журнал ошибок, как это кратко описано ниже.
Для входящего вы можете просмотреть общий журнал запросов.
 select @@general_log; -- a 1 indicates it is turned on for capture select @@general_log_file; -- the file that it logs to 
  Таким образом, все запросы могут быть зарегистрированы в общем журнале запросов, если параметр включен.  Изучите журнал для «connect», но особенно для Access denied for user чтобы увидеть неудачные попытки.  Делайте это регулярно (не каждые несколько лет).  Я делаю это не реже двух раз в день.  Обратите внимание: вы можете автоматизировать отчетность через внешнюю программу.  Внешний мир собирается забить ваш сервер, чтобы войти, как на изображении ниже.  Это реальность;  приготовьтесь к этому. 
 
 
Проверьте также страницу руководства для журнала ошибок , указав уровни предупреждений и подробные настройки на основе вашей версии.
Я бы рекомендовал создать резервную копию по дате (названную как таковой) и удалить файлы журнала после резервного копирования, чтобы начать работу после резервного копирования. Файлы журналов могут быстро увеличиваться, особенно в общем журнале. Не забудьте, включен или выключен параметр для ведения журнала.
Вы можете использовать два журнала, чтобы определить, пропустила ли ваша попытка соединение через брандмауэр во время шагов здесь.