У меня дома есть локальная сеть, и я пытаюсь разработать какую-то программу. Программа является кроссплатформенной и должна подключаться к серверу MySQL.
Сервер настроен на компьютере с Linux и принимает удаленные подключения, поскольку я могу успешно подключаться с компьютеров Windows с библиотекой Connector / C Сервер принимает соединение по стандартному порту 3306.
Однако, когда я пытаюсь подключиться с ноутбука Mac (под управлением OS X 10.8) к MySQL, соединение не устанавливается. Сначала я подумал, что это связано с тем, что мой Mac не отображает имя хоста / имя компьютера в маршрутизаторе, и поэтому сеть перепутана. Но даже после применения того, что было предложено на эта ссылка Я до сих пор не могу подключиться.
Так что теперь мне интересно, если OS X работает какой-то брандмауэр, где мне нужно разблокировать исходящий порт 3306, чтобы установить соединение. Или есть какая-то другая вещь, которая мешает соединению.
Порт на роутере открыт, поэтому проблем там нет.
Так что я могу исправить на стороне Mac или хотя бы проверить?
Редактировать:
Я пытаюсь подключиться с помощью Connector / C из моей программы, скомпилированной с Xcode. Точно такой же код прекрасно работает в Windows (т.е. соединение установлено). Все 3 машины находятся в одной домашней сети. Вызов mysql_error () не приводит к ошибкам, но указатель MYSQL равен NULL после вызова mysql_real_connect ()
Изменить 2:
Вот что показывает ifconfig:
MyMac:dbhandler igorkorot$ ifconfig
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
options=3<RXCSUM,TXCSUM>
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x1
inet 127.0.0.1 netmask 0xff000000
inet6 ::1 prefixlen 128
gif0: flags=8010<POINTOPOINT,MULTICAST> mtu 1280
stf0: flags=0<> mtu 1280
en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
ether b8:e8:56:21:e0:c0
inet6 fe80::bae8:56ff:fe21:e0c0%en0 prefixlen 64 scopeid 0x4
inet6 2601:140:4003:860:bae8:56ff:fe21:e0c0 prefixlen 64 autoconf
inet6 2601:140:4003:860:65c6:8063:98a:4650 prefixlen 64 autoconf temporary
inet6 2601:140:4003:860::1088 prefixlen 64
inet 192.168.1.3 netmask 0xffffff00 broadcast 192.168.1.255
media: autoselect
status: active
p2p0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 2304
ether 0a:e8:56:21:e0:c0
media: autoselect
status: inactive
Таким образом, открытие Network Utility и попытка сканирования 3300 - 3310 на 192.168.1.3 ничего не дает. Это просто говорит это:
Port Scan has started…
Port Scanning host: 192.168.1.3
Port Scan has completed…
Пытаясь просканировать компьютер, на котором находится MySQL, я получаю следующее:
Port Scan has started…
Port Scanning host: 192.168.1.2
Open TCP Port: 3306 mysql
Port Scan has completed…
Ответы:
Шаг первый - убедиться, что ваши порты открыты и нет проблем с сетью.
В Finder откройте / Applications / Utilities / Network Utility.app
Затем выберите «Сканирование портов». Введите IP-адрес (или имя, если в вашей сети настроен DNS) для Linux Box и просканируйте все порты менее 4000.
Успех будет выглядеть как ваши результаты:
Это должна быть быстрая проверка, что сеть и / или DNS работают. Это почти наверняка не блокируется - вам нужно сделать много работы не по умолчанию, чтобы заблокировать произвольные исходящие порты.
Если нет, то вам потребуется ответ на вопрос с достаточным количеством деталей, чтобы кто-то мог помочь.
Если сеть работает, вы можете быть уверены, что она не связана с OS X, и, возможно, сосредоточиться на вопросе уровня кода по переполнению стека.
источник