MySQL com bind-address - é possível criar uma exceção ip?

1

Se você definir o bind-address para 127.0.0.1 em my.cnf , existe alguma maneira de permitir conexões manualmente a partir de um endereço IP específico?

Principalmente, meu banco de dados é acessado pelo servidor no qual ele está hospedado, mas também desejo acessar o banco de dados diretamente de um escritório por meio de um conector odbc. É possível especificar uma exceção? ou é um túnel ssh a única maneira viável de se conectar ao banco de dados uma vez que bind-address foi definido?

(Eu estou tentando evitar ter que configurar um túnel ssh em cada uma das máquinas no escritório).

    
por jessenorton 22.01.2015 / 10:41

2 respostas

4

bind-address especifica o endereço IP local do seu servidor mysql, ele não precisa fazer nada com seu endereço remoto (onde ele pode ser conectado) .

Seu endereço (começando com 192.168 ) é um endereço de rede local, o que significa que ele pode ser conectado somente a partir de sua rede local. É uma maneira muito simples para um servidor de gateway mysql e localnet disponibilizar o mysql exclusivamente na direção da sua rede local.

Mas não é possível fornecer nenhuma filtragem com base no endereço remoto nas conexões.

Esta ligação é na verdade uma configuração do kernel linux (unix): criando um socket, desta vez, a porta TCP 3306 do seu daemon mysql, pode ser configurada, em qual interface ele pode esperar conexões. Por padrão, é conectável em todos eles.

Isto porque você não pode fazer a partir da sua configuração do mysql , o que você quer. Mas você tem duas melhores opções:

  1. Você pode permitir a conexão do mysql a todos (usando bind-address = 0.0.0.0 ou comentar completamente esta linha). Depois disso, você pode usar iptables para limitar os possíveis endereços de conectores (neste caso, para sua rede local e para o ip externo de seu amigo).
  2. Você pode limitar os possíveis conectores mysql usando o próprio mecanismo de segurança do mysqls. É uma autenticação baseada em host do servidor mysql. Google para "host de concessão do mysql".

(1) é mais seguro, mas (2) não requer que você aprenda o iptables.

    
por 22.01.2015 / 10:55
2

Você precisa configurar o encaminhamento de porta via ssh tunnel.

Enquanto mysql ouve no 127.0.0.1:3306 , você precisa criar o link de encaminhamento:

ssh -f [email protected] -L localhost:3306:127.0.0.1:3306 -N

Em seguida, você pode se conectar ao mysql no localhost:3306 da mesma forma que foi lançado na sua máquina local. Todas as conexões com o localhost:3306 serão encaminhadas por meio de um link criptografado para o 127.0.0.1:3306 no your-server.tld . Aqui eu usei synonims localhost e 127.0.0.1 para informar ao cliente do servidor.

Apenas os usuários com conta válida no your-server.tld podem se conectar ao servidor mysql , independentemente do endereço IP. Você pode criar facilmente vários túneis para os diferentes servidores.

ssh -f [email protected] -L localhost:3306:127.0.0.1:3306 -N
ssh -f [email protected] -L localhost:3307:127.0.0.1:3306 -N
ssh -f [email protected] -L localhost:3308:127.0.0.1:3306 -N
    
por 22.01.2015 / 12:31

Tags