How to start a MySQL Instance with Podman
Tags: mysql, podman, linux, português
Published: 2022-10-26 15:05:47

## Como configurar uma instância de MySQL em um container podman.

Esse guia não é exclusivo da distribuição Ubuntu, a partir do momento que você instalou o podman na sua distribuição os passos são muito similares.

Leia este 4Noobs [https://github.com/rluders/containers4noobs/blob/main/pages/install-linux.md](https://github.com/rluders/containers4noobs/blob/main/pages/install-linux.md) para mais informações sobre o Podman no ambiente linux.

E aproveite para conhecer mais sobre containers em: [https://github.com/rluders/containers4noobs/blob/main/README.md](https://github.com/rluders/containers4noobs/blob/main/README.md)

- Instale o podman no Ubuntu 22.04, abra seu terminal e dê o comando:

```bash
sudo apt-get -y update
sudo apt-get -y install podman
```

- Ao final da instalação, certifique de ter instalado corretamente, dê o comando:

```bash
podman --version
```

- Baixe uma imagem MySQL via podman.

```bash
podman pull docker.io/library/mysql
```

- Perceba que o comando que baixa uma imagem utiliza o domínio do docker.
    - Veja também que no lugar de “mysql” podemos colocar qualquer imagem disponível no domínio do docker, por exemplo: “mongo”.
- Ao finalizar o download podemos visualizar as imagens baixadas, dê o comando:

```bash
podman ps
```

- Inicie uma nova instância do MySQL, dê o comando:

```bash
podman run -dt -e MYSQL_ROOT_PASSWORD=<SenhaDoUsuárioRoot> \
-e MYSQL_USER=<NomeDeUsuário> -e MYSQL_DATABASE=<NomeDoBanco> \
--name <NomeDoContainer> -p 3306:3306 mysql:<Tag>
```

Explicando o comando acima:

Leia mais em: [https://docs.podman.io/en/latest/markdown/podman-run.1.html](https://docs.podman.io/en/latest/markdown/podman-run.1.html)

- A flag `-dt` diz para esse container trabalhar em segundo plano e também aloca um pseudoterminal a ele.
- No lugar de **"< SenhaDoUsuárioRoot >"** coloque uma senha que o usuário root do seu container utilizará, por exemplo: **MYSQL_ROOT_PASSWORD=root**
- No lugar de **"< NomeDeUsuário >"** coloque o nome de usuário do mysql desejado, no meu caso será **grandehe4rt**.
- No lugar de **"< NomeDoBanco >"** coloque o nome do banco de dados desejado para o projeto que estará trabalhando.
- No lugar de **"< NomeDoContainer >"** você pode preferir colocar o nome do projeto que você está utilizando.
- No lugar de **"< Tag >"** você pode optar por usar as tags disponíveis pelo próprio docker para imagens [MySQL](https://hub.docker.com/_/mysql/tags), prefira sempre a versão mais estável e recente, opte pela tag “latest” ficando então `mysql:latest`.

A partir do momento que você executar esse comando você terá um container MySQL funcional na porta 3306 do host local.

- Execute o comando:

```bash
podman exec -it <NomeDoContainer> /bin/bash
```

Aqui você irá iniciar o pseudoterminal do seu container como usuário **root**.

- Você pode certificar de que é o usuário root em seu container MySQL rodando o comando:

```bash
whoami

> root
```

- Execute o comando em seguida insira a senha que você definiu no passo anterior (MYSQL_ROOT_PASSWORD):

```bash
mysql -uroot -p
```

- A partir daqui você tem acesso total ao banco de dados do seu container/projeto.

---

### Passos que talvez não seja obrigatório para todos:

Caso você tenha problemas do tipo:

- **MySQL Public Key Retrieval is not allowed.**

Ao se conectar ao banco de dados via DBeaver.

Faça o seguinte no DBeaver:

1- New Database Connection

![Passo1](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6yecgfrs7220lswfyq5j.png)
    
2- MySQL Database.
3- Next.

![Passo2e3](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/d0evso2ca7w2x49j4c4n.png)

4- Preencha o nome do seu banco de dados fornecido no passo anterior (MYSQL_DATABASE)
5- Preencha a senha do usuário root do mysql fornecido no passo anterior (MYSQL_ROOT_PASSWORD)
6- Modifique a configurações de Driver da conexão.

![Passo4_5e6](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/31ybbfhuqr4oafqkviw8.png)

7- Navegue até “Driver properties”
8- E adicione 2 novas propriedades
    8.1. allowPublicKeyRetrieval = true
    8.2. useSSL = false
9- OK

![Passo7_8e9](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fi5jdbuwalppkibi0ux8.png)

10. Clique em test connection, a partir daqui é esperado que funcione normalmente, e ao final você terá uma conexão com seu banco de dados que está instanciado em seu container podman.

Dúvidas, Sugestões e Feedbacks são apreciados.

Me siga nas redes sociais: 

- Twitter: [https://twitter.com/grandehe4rt](https://twitter.com/grandehe4rt)
- Instagram: [https://www.instagram.com/grandehe4rt/](https://www.instagram.com/grandehe4rt/)
- LinkedIn: [https://www.linkedin.com/in/grandehe4rt/](https://www.linkedin.com/in/grandehe4rt/)
- Dev.to: [https://dev.to/grandehe4rt](https://dev.to/grandehe4rt)