Łączenie z OS X 10.8 do MySQL


1

Mam w domu sieć lokalną i próbuję opracować jakiś program. Program jest wieloplatformowy i powinien łączyć się z serwerem MySQL.

Serwer jest skonfigurowany na Linux-ie i akceptuje zdalne połączenia, ponieważ mogę z powodzeniem łączyć się z maszynami Windows z biblioteką Connector / C. Serwer akceptuje połączenie na standardowym porcie 3306.

Jednak gdy próbuję połączyć się z laptopem Mac (z systemem OS X 10.8) z MySQL, połączenie nie zostaje nawiązane. Początkowo myślałem, że wynika to z faktu, że mój komputer Mac nie wyświetla nazwy hosta / nazwy komputera w routerze i dlatego sieć jest zdezorientowana. Ale nawet po zastosowaniu sugestii pod tym linkiem nadal nie mogę się połączyć.

Zastanawiam się więc, czy OS X ma jakąś zaporę ogniową, w której muszę odblokować wychodzący port 3306, aby połączenie zostało nawiązane. Lub jest coś innego, co uniemożliwia połączenie.

Port jest otwarty w routerze, więc nie ma żadnych problemów.

Czy jest coś, co mogę naprawić po stronie Maca, a przynajmniej sprawdzić?


Edytować:

Próbuję połączyć się przy użyciu oprogramowania Connector / C z mojego programu skompilowanego z Xcode. Dokładnie ten sam kod działa poprawnie w systemie Windows (tzn. Nawiązano połączenie). Wszystkie 3 maszyny są w tej samej sieci domowej. Wywołanie mysql_error () nie powoduje żadnych błędów, ale wskaźnik MYSQL ma wartość NULL po wywołaniu mysql_real_connect ().


Edycja 2:

Oto, co pokazuje 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

Tak więc otwarcie narzędzia sieciowego i próba skanowania w poszukiwaniu 3300 - 3310 w 192.168.1.3 nic nie daje. Po prostu mówi to:

Port Scan has started…

Port Scanning host: 192.168.1.3

Port Scan has completed…

Próbując przeskanować komputer, na którym znajduje się MySQL, otrzymuję:

Port Scan has started…

Port Scanning host: 192.168.1.2

     Open TCP Port:     3306        mysql
Port Scan has completed…

Bez znacznie więcej informacji na temat konfiguracji sieci (np. Czy komputer Mac i maszyna obsługują mySQL w tej samej sieci LAN), sposób, w jaki próbujesz się połączyć, oraz komunikaty o błędach, jakie otrzymujesz, trudno zaproponować jakiekolwiek poprawki. Czy możesz odpowiednio edytować swoje pytanie?
nohillside

dlaczego nie użyć narzędzia sieciowego do skanowania portu bazy danych IP? Jeśli widzisz, że port 3306 jest otwarty z macOS, wiesz, że nie jest to wcale zapora sieciowa ani sieć.
bmike

@patrix, pytanie zredagowane. Przepraszam za to.
Igor

@bike, czy jest domyślnie zainstalowany na OSX? Jestem programistą, a nie administratorem sieci.
Igor

Spotlight pokaże Ci lokalizację. Masz również aplikację terminalową w narzędziach. Wiele rzeczy możesz zrobić jako użytkownik lokalny, nawet jeśli twoje konto nie jest użytkownikiem administracyjnym.
bmike

Odpowiedzi:


1

Pierwszym krokiem jest upewnienie się, że porty są otwarte i nie występuje problem z siecią.

W Finderze otwórz / Aplikacje / Narzędzia / Network Utility.app

Następnie wybierz „Skanowanie portów”. Wprowadź adres IP (lub nazwę, jeśli w sieci skonfigurowano DNS) Linux Box i zeskanuj wszystkie porty mniejsze niż 4000.

Sukces wyglądałby tak, jak Twoje wyniki:

Port Scanning host: 192.168.1.2

     Open TCP Port:     3306        mysql
Port Scan has completed…

Powinno to być szybkie sprawdzenie, czy sieć i / lub DNS działają. Prawie na pewno nie jest blokowany - musisz wykonać wiele domyślnych zadań, aby zablokować dowolne porty wychodzące.

Jeśli nie, będziesz potrzebować odpowiedzi na pytania z wystarczającą ilością szczegółów, aby pomóc komuś.

Jeśli sieć działa, możesz być pewien, że nie jest ona związana z systemem OS X i być może skupisz się na pytaniu na poziomie kodu na temat przepełnienia stosu.


@ bmike ♦ pytanie edytowane z większą ilością informacji.
Igor

@Igor - Doskonała edycja - Potwierdziłem, że nie masz żadnych problemów po stronie systemu operacyjnego Apple - twoje porty są otwarte, więc jest to wyłącznie problem z kodem podczas instalacji połączeń / biblioteki / mysql. Wygląda na to, że znasz się na powłokach - więc prawdopodobnie możesz podłączyć klienta mysql z wiersza poleceń i przekonać się o tym samym.
bmike

♦ dziękuję. Martwiłem się, ponieważ ten sam kod doskonale łączy się z systemem Windows i ponieważ nie znam tak naprawdę wewnętrznych elementów OSX ... Więc teraz przejdę do sprawdzania kodu.
Igor
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.