Не удается подключиться к mySql с компьютера в локальной сети

У меня есть MySql Server 5.7, работающий как служба на одном компьютере в локальной сети.

Мое приложение установлено и работает нормально на том же компьютере. У меня установлен параметр «Доступно для всех» для каталога, в котором находится мое приложение. В тот же каталог я поместил файлы libmysql.dll и FDConnectionDefs.ini.

Мое приложение работает нормально на этом компьютере. На других компьютерах в локальной сети я создал ссылку на каталог, в котором находится мое приложение. Когда я пытаюсь запустить свое приложение из этих систем локальной сети, они выдают сообщение об ошибке

[FireDac][Phys][mySql] не может подключиться к серверу mySql 127.0.0.1 через порт 3306... (10061).

Все машины работают под управлением Windows 10 на 64-битных процессорах.

Вот что я пытался решить проблему:

  • убедитесь, что пользователь, пароль и хост (%) совпадают в профиле mySql и FDConnectionDefs.ini.
  • Я пробовал с разными пользователями, даже с root, я пытался изменить хост (%), чтобы указать IP-адрес компьютера, пытающегося подключиться, в профиле mySql.
  • Я удостоверяюсь, что у меня есть разрешения на запуск моего приложения и mySql и что порт 3306 открыт в брандмауэре/Касперском на каждом компьютере в локальной сети. Но всегда одно и то же сообщение об ошибке.

person R.Drolet    schedule 03.11.2016    source источник
comment
Вы можете попробовать сформулировать свой вопрос. Стена текста, которую увидят люди, немного пугающая и трудная для чтения (хотя ваш английский кажется хорошим). Может и заголовок поправить. Я не совсем уверен, что это значит   -  person Carcigenicate    schedule 03.11.2016
comment
Ваш IP-адрес в локальной сети на самом деле 192.0.0.1? Если вы не интернет-провайдер, вам не следует использовать этот адрес в частной сети.   -  person J...    schedule 03.11.2016
comment
Упс! Я имею в виду 127.0.0.1 на порту 3306.   -  person R.Drolet    schedule 03.11.2016
comment
Я подумал, может быть, так оно и было...   -  person J...    schedule 03.11.2016


Ответы (1)


127.0.0.1 – это специальный IP-адрес — "петлевой" адрес, который обычно разрешается для localhost. на большинстве систем. Это частный внутренний IP-адрес, который компьютер может использовать для обращения к самому себе. Это не имеет значения для других систем в локальной сети, поскольку каждый компьютер распознает 127.0.0.1 как само значение.

Это означает, что когда вы запускаете приложение в удаленной системе, оно будет пытаться подключиться к серверу MySQL, работающему локально, а не к другому серверу.

Вам потребуется настроить компоненты FireDac для подключения к фактическому IP-адресу локальной сети, принадлежащему системе, на которой размещен сервер MySQL. Возможно, вам также потребуется убедиться, что ваши пользователи MySQL настроены на аутентификацию с IP-адреса, отличного от локального.

person J...    schedule 03.11.2016
comment
Очень интересно и очень понятно! Я собираюсь протестировать это завтра. Я вернусь! - person R.Drolet; 04.11.2016
comment
Привет, я только что попробовал решение, но сообщение об ошибке немного изменилось: [FireDac][Phys][mySql] не может подключиться к серверу mySql 67.70.76.128 через порт 3306... (10060). - person R.Drolet; 04.11.2016
comment
Я изменил IP-адрес в файле FDConnectionDefs.ini с тем же результатом. Я изменил поле Host в профиле пользователя MySql (% --> IP-адрес) с тем же результатом. Я заметил, что оба компьютера имеют одинаковый IP-адрес!!! У меня есть IP-адрес с Whatismyip.com на каждом компьютере. - person R.Drolet; 04.11.2016
comment
@R.Drolet Ты пытаешься бежать, прежде чем сможешь ходить, вот. Если вы собираетесь создать сетевое приложение, вам нужно будет начать с изучения того, как работают сети. Использование общедоступной веб-службы, такой как Whatismyip.com, вернет общедоступный IP-адрес (адрес глобальной сети), который ваш интернет-провайдер предоставляет любому устройству, которое подключает вас к более широкому Интернету. Однако внутри у вас будет маршрутизатор или коммутаторы и т. д., которые составляют вашу внутреннюю сеть (LAN) — каждая система будет иметь уникальный IP-адрес в вашей локальной сети, который является частным. - person J...; 04.11.2016
comment
@R.Drolet Эта тема слишком широка, чтобы поместиться в комментарий, в любом случае - в порядке последовательности вам нужно будет 1) узнать разницу между IP-адресами WAN и LAN, 2) узнать, как узнать IP-адрес вашей локальной сети, 3) Настройте MySQL для обслуживания и приема пользовательских подключений по адресу LAN. 4) Настройте компоненты FireDac для использования IP-адреса LAN сервера MySQL. Если вы застряли, я предлагаю вам задать каждый из них как отдельный вопрос. - person J...; 04.11.2016
comment
@R.Drolet R.Drolet Я также предполагаю, что вы не хотите предоставлять доступ к своему серверу MySQL более широкому Интернету. Если вы проделали дыры в своих брандмауэрах, пытаясь заставить это работать, и ваш сервер MySQL настроен на прием подключений с адреса WAN, я также предлагаю вам отменить это — иметь публичный SQL-сервер представляет собой огромный риск для безопасности, вдвойне, если вы не понимаете, что это за риски. - person J...; 04.11.2016
comment
Опять же очень интересно и очень понятно! 1) С вашим комментарием выше я могу иметь значение для моей неотложной необходимости. 2) С подсказкой CMD и IPConfig я должен теперь получить хороший IP-адрес локальной сети, верно? 3) и 4) Я думал, что правильно указал IP-адрес локальной сети в параметре сервера в файле FDConnectionDefs.ini, не так ли? - person R.Drolet; 04.11.2016
comment
@R.Drolet Да, также убедитесь, что ваш пользователь mysql имеет разрешение на подключение со своих IP-адресов в локальной сети (т.е. с % или 192.168.0.0 , Например). Вам необходимо убедиться, что ваш сервер MySQL также прослушивает IP-адрес локальной сети сервера (см. адрес-привязки) - person J...; 04.11.2016
comment
Хорошо, я только что попробовал с 192.168.2.127, который является IP-адресом локальной сети, где работает сервер MySql, и я заменил % на этот IP-адрес локальной сети в профиле пользователя, и да, я использую один и тот же пароль на обоих концах. Снова такое же сообщение об ошибке, но с IP-адресом локальной сети. Как убедиться, что сервер MySql прослушивает IP-адрес локальной сети сервера? - person R.Drolet; 04.11.2016
comment
Я только что просмотрел файл журнала и вот что я увидел: Отметка времени, Тема, Тип, Детали 2016-11-04T19:13:26, 142, Примечание, Доступ запрещен для пользователя «root» @ «localhost» (с использованием пароля: НЕТ). Я вообще не использую пользователя root со вчерашнего дня! Откуда это взялось? - person R.Drolet; 04.11.2016
comment
@R.Drolet В этот момент, я думаю, вам нужно начать новый вопрос. Предоставьте всю имеющуюся у вас информацию, и вы, вероятно, получите лучший ответ теперь, когда ваш вопрос стал более целенаправленным и конкретным. - person J...; 04.11.2016
comment
Хорошо, я буду. ОГРОМНОЕ спасибо за помощь и терпение! Я многому научился у вас и очень ценю то, что вы сделали! Хорошего дня! - person R.Drolet; 04.11.2016
comment
Это работает!!! Ты был прав во всем. Я опечатался в одной цифре на последнем шаге при вводе IP-адреса локальной сети. После исправления мне пришлось ввести имя компьютера в поле «Учетная запись пользователя» «От хоста» сервера MySql и Бинго! Еще раз большое спасибо!! - person R.Drolet; 06.11.2016