Conectando-se do OS X 10.8 ao MySQL


1

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…

Sem muito mais informações sobre sua configuração de rede (por exemplo, o Mac e a máquina executando mySQL na mesma LAN), a maneira como você tenta se conectar e as mensagens de erro que recebe, é difícil propor quaisquer correções. Você pode por favor editar sua pergunta de acordo?
nohillside

Por que não usar o utilitário de rede para a porta de digitalização do IP do banco de dados? Se você vir a porta 3306 aberta do macOS, saberá que ela não é relacionada a firewall ou rede.
bmike

@patrix, questão editada. Me desculpe por isso.
Igor

@bmike, é um instalado por padrão no OSX? Eu sou um desenvolvedor, não um administrador de rede.
Igor

O Spotlight mostrará a localização. Você também tem o aplicativo terminal nos utilitários. Muitas coisas que você pode fazer como um usuário local, mesmo que sua conta não seja um usuário administrador.
bmike

Respostas:


1

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:

Port Scanning host: 192.168.1.2

     Open TCP Port:     3306        mysql
Port Scan has completed…

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.


@ bmike ♦ questão editada com mais informações.
Igor

@Igor - Excelente edição - Eu confirmei que você não tem nenhum problema no lado do sistema operacional da Apple - suas portas estão abertas, então isso é puramente um problema de código com sua instalação de chamadas / biblioteca / mysql. Parece que você está mais familiarizado com shells - então provavelmente você pode conectar o cliente mysql a partir da linha de comando e se convencer do mesmo.
bmike

♦ obrigado. Eu estava preocupado, já que o mesmo código se conecta perfeitamente ao Windows e já que eu não estou muito familiarizado com os componentes internos do OSX ... Então, agora vou passar para a verificação de código.
Igor
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.