Comunicação entre containers Linux (lxc)

1

Eu tenho um contêiner para o meu servidor web Apache e outro para o meu servidor Mysql. Eu dei a eles 2 IPs estáticos

NAME                   STATE    IPV4        IPV6  AUTOSTART  
-----------------------------------------------------------
apache                 RUNNING  10.0.3.10   -     YES        
mysql                  RUNNING  10.0.3.20   -     YES    

O problema que tenho é que não consigo chegar ao servidor Mysql do servidor Apache.

Se eu executar isso no servidor mysql:

mysql -h 127.0.0.1 -u root -p

Não tenho problemas para fazer login, mas se eu executar isso no servidor da Web:

mysql -h 10.0.3.20 -u root -p

Eu recebo este erro:

ERROR 2003 (HY000): Can't connect to MySQL server on '10.0.3.20' (111)

O que estou perdendo?

    
por Enrique Moreno Tent 18.06.2014 / 18:54

1 resposta

3

O problema não está nos contêineres, mas na configuração do mysql. Por padrão, o mysql escuta apenas no host local. Você precisa alterá-lo para 0.0.0.0 bind address.

Por exemplo antes de mudar você pode ver 127.0.0.1:3306. Deve ser 0.0.0.0:3306

root@mysql:~# netstat -anp |grep LISTEN
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      418/mysqld   

edit /etc/mysql/my.cnf

edite a linha de endereço de ligação para ficar assim:

bind-address            = 0.0.0.0

Em seguida, reinicie o serviço mysql.

Conecte-se ao mysql no container mysql e crie o usuário root @ "all" com o comando abaixo.

  

CONCEDA TODOS OS PRIVILÉGIOS EM . TO 'root' @ '%' WITH GRANT OPTION IDENTIFICADO POR 'PASSWORD'; privilégios de flush;

Lembre-se: substitua PASSWORD por uma senha de root para root @ all que você deseja ter

    
por Robert Glonek 18.06.2014 / 20:37