[DICA] Como instalar o MySQL no Docker e conectar no DBeaver (Windows e Linux)

E ae, galera! Tudo certo?
Hoje lhes trago mais uma dica quentíssima para você que esta precisando instalar o MySQL no Docker (ou por que não quer instalar na sua máquina diretamente o database).

Linux: no sistema do pinguim é o mais fácil. Com o Docker já instalado, iremos as etapas:

  1. Com o Docker rodando, abra o terminal e faça o pull da imagem: sudo docker pull mysql

  2. Agora, iremos iniciar a instância do MySQL: docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag
    (Onde some-mysql é o nome que você quer dar ao container, my-secret-pw a senha que você criou e, onde tem “:tag” você coloca a versão do MySQL, por exemplo → latest)

  3. Cheque se o container está ativo: sudo docker ps
    (Caso não, execute sudo docker exec -it (nome do seu container MySQL) bash

  4. Próxima etapa é saber qual o IPAddress do container MySQL, para isso, rode no terminal: sudo docker inspect (nome do seu container MySQL)| grep IPAddress e procure pelo endereço de IP (via de regra será 172.17.0.2, pode variar)

  5. Próxima etapa é abrir o DBever e adicionar uma conexão com o DB MySql. Sem muito mistério: New DataBase Connection, Selecione “MySQL” e dê next.

  6. Na tela Connect to a DataBase, escreva na caixa de Server Host o endereço de IP do container (172.17.0.2), em DataBase coloque mysql e em password coloque a senha que você escolheu para seu DB MySQL.

  7. Selecione Test Connection, baixe o driver JDBC (caso necessário) e, por fim, clique em finish.

/--------------------------------------------------------------------------------------------------------------------------------------------------------------------/

Windows: no SO da Microsoft é um pouco mais “trivial”, mas nada impossível.

  1. Com o Docker Desktop rodando, abra o powershell como administrador e faça o pull da imagem: docker pull mysql

  2. Agora, iremos iniciar a instância do MySQL: docker run --name MySQL1 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=YourPassword -d mysql:tag (Onde MySQL1é o nome que você escolheu para seu container MySQL,YourPassworda senha de sua escolha para seu container,-p 3306:3306é a porta padrão do MySQL no Docker etag` a versão que você almeja usar, por exemplo: latest.

  3. Agora vamos conferir se o container está ativo, para isso, rode no powershell docker ps, caso não apareça, inicie o container na mão com docker exe -it *Nome que você deu ao container* bash

  4. Agora, abra o DBeaver

  5. Próxima etapa é abrir o DBever e adicionar uma conexão com o DB MySQL. Sem muito mistério: New DataBase Connection, Selecione “MySQL” e dê next.

  6. Na tela Connect to a DataBase, escreva na caixa de Server Host localhost, em DataBase coloque mysql e em password coloque a senha que você escolheu para seu DB MySQL.

  7. Selecione Test Connection, baixe o driver JDBC (caso necessário) e, por fim, clique em finish.

:lizard:

3 curtidas

Só para complementar a postagem: é preciso configurar os drivers antes de realizar a conexão com o DB em si.

  • Na tela “Configurações de conexão” (tela principal), clique em “Editar configurações do driver”

  • Clique em “Propriedades da conexão”

  • Clique com o botão direito na área “propriedades do usuário” e escolha “Adicionar nova propriedade”

  • Adicione duas propriedades: “useSSL” e “allowPublicKeyRetrieval”

  • Defina seus valores como “false” e “true” clicando duas vezes na coluna “value”

1 curtida

Show de bola, cara.
Aproveitando o gancho: Eu to tentando fazer meu ambiente dev com uma imagem custom do ubuntu com php e as extensões que eu uso e outro container com o mysql8. Quando eu uso tudo pelo terminal, funciona que é uma beleza, mas usando o docker-compose o banco não fica rodando. Já vasculhei a grande rede e não achei nenhum conteúdo (pelo menos não que eu pude entender). Usando o guia da própria imagem oficial no docker hub, ainda assim o DBeaver não conecta, dizendo q a conexão foi recusada. Mas percebo do vscode q o container do mysql é instanciado mas logo é quitado, ao contrário do container ubuntu com php. Tem alguma dica?
Desde já agradeço.

muito boa dica, parabéns
Talvez você possa ajudar…
Configurei o wsl2 e instalei o Ubuntu-20.04
Tenho um container MySql e consigo conectar nele via DBeaver ou Workbench, sem problema…
A dúvida é se tem uma forma de conectar no MySql do container com algo como localhost ou algo parecido?
Porque o ip fica mudando e sempre que reinicio a máquina tenho que ir olhar qual o ip do ubuntu e mudar a configuração da conexão do banco para funcionar

Estou fazendo algo errado?

Muito obrigado

Ps. Detalhes da instalação
Tenho o docker engine instalado no linux, não tenho o docker desktop no windows
Será que existe uma maneira de fazer isso funcionar sem precisar ficar consultando o ip do linux sempre que inicio a máquina ?

Boas vindas aos fórum :wave:

Você instalou o MySQL no Ubuntu do WSL2 ou instalou o MySQL diretamente no Docker?

Até onde consegui me virar com a documentação oficial disponível no Docker Hub, apenas é possível usar no host 172.17.0.2 e a porta é padrão, 3306.