Соединение с MySQL не работает

$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 никогда не печатает – не уверен, почему.

Solutions Collecting From Web of "Соединение с MySQL не работает"

Вот быстрый быстрый контрольный список для включения удаленных подключений для 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 чтобы увидеть неудачные попытки. Делайте это регулярно (не каждые несколько лет). Я делаю это не реже двух раз в день. Обратите внимание: вы можете автоматизировать отчетность через внешнюю программу. Внешний мир собирается забить ваш сервер, чтобы войти, как на изображении ниже. Это реальность; приготовьтесь к этому.

введите описание изображения здесь

Проверьте также страницу руководства для журнала ошибок , указав уровни предупреждений и подробные настройки на основе вашей версии.

Я бы рекомендовал создать резервную копию по дате (названную как таковой) и удалить файлы журнала после резервного копирования, чтобы начать работу после резервного копирования. Файлы журналов могут быстро увеличиваться, особенно в общем журнале. Не забудьте, включен или выключен параметр для ведения журнала.

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