Tenho um contêiner docker executando docker com imagem MySQL. Digamos que ele é chamado sql
.
Este contêiner possui 2 bancos de dados: database1
edatabase2
Criei usuários específicos para cada banco de dados, digamos, user1
acesso total database1
e user2
acesso total adatabase2
Então eu tenho dois outros contêineres docker com imagem PHP. Digamos que um é chamado php1
and php2
.
Todos os 3 contêineres, sql
e php1
estão php2
sendo executados na mesma rede Docker
A questão é que se eu conceder privilégios user1
e user2
disser:
GRANT ALL PRIVILEGES ON `database1`.* TO 'user1'@'php1';
GRANT ALL PRIVILEGES ON `database2`.* TO 'user2'@'php2';
Então, se eu tentar fazer login php1
com:
mysql -p -u user1 -h sql
Ele não pode autenticar porque resolve o nome do host com o IP da rede (por exemplo 172.18.0.3
) em vez de usar o nome do hostphp1
O problema aqui é que li que existe uma configuração no MySQL para my.cnf
isso, não tenho certeza se tem algo a ver com isso chamadoskip-name-resolve
Mas de acordo com este artigo: https://nixcp.com/skip-name-resolve/
Mesmo que isso pudesse resolver o problema, prejudica seriamente o desempenho.
Gostaria de saber se alguém tem alguma solução para esse cenário.
Uma opção poderia ser fixar um IP estático para cada instância do Docker e então, em vez de usar nomes para autenticação, usar o IP diretamente.
Mas estou pensando se há uma solução melhor, além de usar IP estático ou remover a skip-name-resolve
diretiva que estou ignorando completamente.