Como criar um container com MySQL Server com Docker e conectá-lo no Workbench [Linux]
Tags: mysql, docker, linux, workbench
Published: 2022-01-26 11:06:40

---
title: Como criar um container com MySQL Server com Docker e conectá-lo no Workbench [Linux] 
published: true
description: Como criar um container com MySQL Server, entrar nesse container e conectá-lo com o MySQL Workbench
tags: mysql, docker, linux, workbench
cover_image: https://images.unsplash.com/photo-1483736762161-1d107f3c78e1?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1267&q=80
---
Esse texto tem fins educacionais. Fiz o procedimento para acompanhar a matéria de **banco de dados** na faculdade e espero que te ajude a estudar algumas coisinhas. 

Caso não tenha o Docker instalado ainda, abra o terminal e atualize os pacotes:

```bash
sudo apt-get update
```

Instale esses pacotes:

```bash
sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common
```

Adicione a GPG key oficial do Docker:

```bash
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
```

Adicione o repositório:

```bash
sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"
```

Atualize os pacotes novamente e adicione o Docker Engine:

```bash
sudo apt-get install docker-ce docker-ce-cli containerd.io
```

Para evitar ter que usar o `sudo` o tempo todo, crie um grupo docker e adicione seu user no grupo:

```bash
$ sudo groupadd docker
$ sudo usermod -aG docker $USER
$ newgrp docker
```

Abra e feche o terminal, depois rode um `docker run hello-world` para checar que está tudo ok.

## Criando container com MySQL Server

Para criar um container com o MySQL faça o seguinte:

```bash
docker run -p 3306:3306 --name=seu-container -d mysql/mysql-server
```

Esse comando roda um container chamado “seu-container” a partir de uma imagem do MySQL Server e mapeia a porta 3306 do container com a sua de mesmo número. Dê um `docker ps` e veja o que tem rodando na sua máquina.

## Se conectando no MySQL Server e configurando senha

Pegue a senha randômica gerada:

```bash
docker logs seu-container 2>&1 | grep GENERATED
```

Copie a root password que apareceu e rode o comando:

```bash
docker exec -it seu-container mysql -uroot -p
```

Cole a password e dê enter. Depois disso, já no server, digite:

```bash
ALTER USER 'root'@'localhost' IDENTIFIED BY '12345';
```

Isso vai mudar a senha padrão do usuário para 12345. Depois rode o seguinte:

```bash
update mysql.user set host = '%' where user='root';
```

Esse comando vai permitir que você conecte o Workbench no container. Dê um `ctrl-D` e depois um `docker restart seu-container`. 

## Conectando no MySQL Workbench

Vá ao MySQL Workbench e clique na instância local:

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/cstx1r7cjf4au6mj4aqg.png)

Depois disso você poderá colocar a senha:

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/3usroawgz2ouagz078ls.png)

Pronto, aparecerá uma telinha e aconselho você a explorar o que tem nela. 

---
_Fontes_:
[MySQL Server Docker](https://hub.docker.com/r/mysql/mysql-server/)
[StackOverflow](https://stackoverflow.com/questions/33827342/how-to-connect-mysql-workbench-to-running-mysql-inside-docker)
[Install Docker](https://docs.docker.com/engine/install/ubuntu/)

---
_Esse texto não tem intenção de esgotar o tema. Acrescente nos comentários, e também aponte erros quando os identificar._