Подключение от OS X 10.8 к MySQL


1

У меня дома есть локальная сеть, и я пытаюсь разработать какую-то программу. Программа является кроссплатформенной и должна подключаться к серверу 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…

Без дополнительной информации о настройке вашей сети (например, о Mac и компьютере, на котором работает mySQL в одной локальной сети), о том, как вы пытаетесь подключиться, и об ошибках, которые вы получаете, трудно предложить какие-либо исправления. Можете ли вы отредактировать свой вопрос соответственно?
nohillside

почему бы не использовать сетевую утилиту для сканирования портов IP базы данных? Если вы видите, что порт 3306 открыт из macOS, вы знаете, что это вовсе не брандмауэр или сеть.
bmike

@patrix, вопрос отредактирован. Извини за это.
Igor

@bmike, один установлен по умолчанию на OSX? Я разработчик, а не администратор сети.
Igor

Прожектор покажет вам местоположение. У вас также есть приложение терминала в утилитах. Многое вы можете сделать как локальный пользователь, даже если ваша учетная запись не является администратором.
bmike

Ответы:


1

Шаг первый - убедиться, что ваши порты открыты и нет проблем с сетью.

В Finder откройте / Applications / Utilities / Network Utility.app

Затем выберите «Сканирование портов». Введите IP-адрес (или имя, если в вашей сети настроен DNS) для Linux Box и просканируйте все порты менее 4000.

Успех будет выглядеть как ваши результаты:

Port Scanning host: 192.168.1.2

     Open TCP Port:     3306        mysql
Port Scan has completed…

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

Если нет, то вам потребуется ответ на вопрос с достаточным количеством деталей, чтобы кто-то мог помочь.

Если сеть работает, вы можете быть уверены, что она не связана с OS X, и, возможно, сосредоточиться на вопросе уровня кода по переполнению стека.


@ bmike ♦ вопрос отредактирован с дополнительной информацией.
Igor

@Igor - Отличное редактирование - я подтвердил, что у вас нет проблем со стороны Apple OS - ваши порты открыты, так что это чисто проблема кода при установке звонков / библиотеки / mysql Похоже, вы больше всего знакомы с оболочками - так что вы, вероятно, можете подключить клиент MySQL из командной строки и убедиться в этом.
bmike

♦, спасибо. Я был обеспокоен тем, что тот же код прекрасно соединяется с Windows, так как я не очень знаком с внутренними компонентами OSX ... Так что теперь я перейду к проверке кода.
Igor
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.