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…
Odpowiedzi:
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:
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.
źródło