Eu tenho uma rede local em casa e estou tentando desenvolver algum programa. O programa é multi-plataforma e deve se conectar a um servidor MySQL.
O servidor está configurado na caixa Linux e aceita conexões remotas, pois posso conectar-me com êxito a partir de máquinas Windows com a biblioteca Connector / C. O servidor aceita conexão na porta padrão 3306.
No entanto, quando tento conectar de um laptop Mac (executando o OS X 10.8) ao MySQL, uma conexão não é estabelecida. Inicialmente, pensei que isso se deve ao fato de que meu Mac não exibe seu nome de host / nome de computador no roteador e, portanto, a rede está confusa. Mas mesmo depois de aplicar o que foi sugerido em esse link Ainda não consigo me conectar.
Então, agora eu estou querendo saber se o OS X está executando algum tipo de firewall onde eu preciso desbloquear uma porta de saída 3306 para que a conexão seja concluída. Ou há outra coisa que impede a conexão.
A porta está aberta no roteador, portanto, não há problemas.
Então, há algo que eu possa consertar no lado do Mac ou pelo menos checar?
Editar:
Eu estou tentando se conectar usando o Connector / C do meu programa compilado com o Xcode. Um mesmo código funciona bem no Windows (ou seja, a conexão é estabelecida). Todas as 3 máquinas estão na mesma rede doméstica. Chamar mysql_error () não produz nenhum erro, mas o ponteiro MYSQL é NULL depois de chamar mysql_real_connect ().
Editar 2:
Aqui está o que ifconfig mostra:
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
Portanto, abrir o Network Utility e tentar procurar 3300 - 3310 em 192.168.1.3 não produz nada. Apenas diz isto:
Port Scan has started…
Port Scanning host: 192.168.1.3
Port Scan has completed…
Tentando escanear a máquina onde o MySQL está, eu obtenho o seguinte:
Port Scan has started…
Port Scanning host: 192.168.1.2
Open TCP Port: 3306 mysql
Port Scan has completed…
Respostas:
O primeiro passo é garantir que suas portas estejam abertas e não haja um problema de rede.
No Finder, abra / Aplicativos / Utilitários / Network Utility.app
Em seguida, escolha "Port Scan". Digite o endereço IP (ou o nome se o DNS estiver configurado na sua rede) da Caixa Linux e verifique todas as portas com menos de 4000.
Um sucesso seria parecido com seus resultados:
Isso deve ser uma verificação rápida de que a rede e / ou o DNS estão funcionando. É quase certo que não está sendo bloqueado - você tem que fazer muito trabalho não padrão para bloquear portas de saída arbitrárias.
Caso contrário, você precisará de uma pergunta sobre o assunto com detalhes suficientes para ajudar alguém.
Se a rede estiver funcionando, você pode ter certeza de que ela não está relacionada ao OS X e talvez se concentre em uma pergunta no nível de código no Stack Overflow.
fonte