Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

host.docker.internal' is not allowed to connect to this MySQL server

Segui os passos fornecidos pelo instrutor e obtive a seguinte mensagem do servidor:

PDOException Object
(
    [message:protected] =>; SQLSTATE[HY000] [1130] Host 'host.docker.internal' is not allowed to connect to this MySQL server
    [string:Exception:private] =>; 
    [code:protected] =>; 1130
    [file:protected] =>; /var/www/html/funcoes.php
    [line:protected] =>; 7
    [trace:Exception:private] =>; Array
        (
            [0] =>; Array
                (
                    [file] =>; /var/www/html/funcoes.php
                    [line] =>; 7
                    [function] =>; __construct
                    [class] =>; PDO
                    [type] =>; ->;
                    [args] =>; Array
                        (
                            [0] =>; mysql:host=192.168.0.10;dbname=empresa
                            [1] =>; root
                            [2] =>; q1w2e3r4
                        )
                )
            [1] =>; Array
                (
                    [file] =>; /var/www/html/index.php
                    [line] =>; 6
                    [args] =>; Array
                        (
                            [0] =>; /var/www/html/funcoes.php
                        )
                    [function] =>; include
                )
        )
    [previous:Exception:private] =>; 
    [errorInfo] =>; 
)

O parâmetro host no arquivo 'bancodados.php' foi devidamente configurado com o meu IP, mas por alguma razão não funcionou.

O sevidor informa o seu próprio IP na página de acesso, que no meu caso é 172.26.0.3. Em um processo de tentativa e erro defini o parâmetro host como 172.26.0.1, o que levou ao funcionamento da página.

Depois utilizei-me do docker inspect nesse container e descobri que esse IP é o IP de gateway do container.

Tentei colocar o IP do container do mysql como valor para o atributo host mas não funcionou.

Se possível gostaria que alguém me auxiliasse a compreender melhor o porquê de só ter funcionado com esse IP e não ter funcionado nem com o IP da minha máquina e nem com o IP do container do mysql.

2 respostas
solução!

Olá Thiago, tudo bem? Então, você deve continuar usando o IP 172.26.0.1 que é IP de gateway da rede do container, no caso da rede ao qual o container está vinculado. O erro:

SQLSTATE[HY000] [1130] Host 'host.docker.internal' is not allowed to connect to this MySQL server

Indica que não é permitido a conexão com o MySQL dessa forma, isso acontece porque por padrão o MySQL cria uma conta 'root'@'localhost' que só pode ser acessada de dentro do container MySQL. Para permitir conexões raiz de outros hosts, como é o caso dos outros containers, temos que atribuir uma configuração a mais no arquivo docker-compose.yml ou podemos simplesmente usar IP gateway da rede. Você pode ver mais sobre isso na própria documentação do MySQL.

Espero ter esclarecido sua dúvida!

Muito obrigado Jonilson, esclareceu sim.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software