Esta página foi elaborada, com informações básicas, sobre como instalar e configurar o MySQL Communit Server em um ambiente de desenvolvimento local.
O Docker MySQL Server é uma Imagem otimizada do MySQL Comunit Server. Criado, mantido e apoiado pela equipe MySQL da Oracle.
Esta é uma sugestão de uma configuração inicial, para uso em máquinas de testes ou desenvolvimento. Não implemente em um servidor MySQL na produção, sem considerar a segurança e desempenho.
- Máquina com sistema operacional Linux;
- Você precisa ter o Docker instalado em sua máquina local;
Baixe a imagem otimizada do MySQL Server Docker
$ docker pull mysql/mysql-server
A imagem foi baixada com sucesso, para visualizar a imagem digite:
$ docker image ls
Iniciaremos um container novo.
Criar os volumes "datasets" e "db_mysql". Criaremos estes volumes por dois motivos:
- Porque é uma das formas de compartilhar dados entre os containers e a máquina local;
- Para manter o volume /var/lib/mysql persistente;
Os dados gravados no container Docker são voláteis, ou seja, quando um container é encerrado os dados ou configurações adicionais serão perdidos. Então, criar um volume e mapeá-lo em um diretório na máquina local permite mantê-los persistentes.
Esta é uma sugestão, você não precisa a criar esses volumes. Para o ambiente de desenvolvimento que estaremos contruindo será necessário.
Para criamos os volumes persistentes na máquina local digite:
$ docker volume create datasets
$ docker volume create db_mysql
Listar os volumes criados:
$ docker volume ls
Caso você queira saber, onde os volumes foram criados na máquina local, digite:
$ docker inspect datasets
ou
$ docker inspect db_mysql
Os volumes foram criados com sucesso!
Iniciaremos o container MySQL.
$ docker container run --name=MySQL \
-e MYSQL_ROOT_HOST=% \
-d --mount type=volume,source=datasets,destination=/opt/datasets \
--mount type=volume,source=db_mysql,destination=/var/lib/mysql \
mysql/mysql-server:8.0
Aguarde a inicialização do serviço!
A inicialização do container pode levar algum tempo. Quando o servidor estiver pronto para uso, o STATUS do container na saída do comando, docker ps, mudará de (health: starting) para (healthy).
O container está sendo executado em segundo plano, para monitorar a saída do container, use o seguinte comando:
$ docker logs MySQL
Procure nos logs a senha padrão do usário root e copie.
$ docker logs MySQL 2>&1 | grep GENERATED
Agora acessaremos o container do servidor MySQL que foi criado e instanciado.
Use o comando docker exec -it
, para iniciar um cliente mysql dentro do container Docker.
$ docker exec -it MySQL mysql -u root -p
Informe a senha aleatória que foi criada.
Após digitar a senha, teremos o acesso ao SHELL do MySQL.
Alteraremos a senha do root e permitir o acesso remoto via console da máquina local. Para redefinir a senha do root do servidor execute esta instrução:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'senha@12345678';
$ docker exec -it MySQL mysql -u root -psenha@12345678
Para acessar o servidor MySQL, que foi instanciado no Docker, você precisa descobrir o IP da máquia. Use o comando docker inspect
para examinar detalhes da configuração do Docker.
$ docker inspect MySQL
$ mysql -u root -p -h 172.17.0.3 -u root
Foi reportado um Erro!.
O usuário root não tem permissão para acesso remoto, então para resolver esse problema vamos criar um usuário para acesso remoto.
- Acessar o console SHELL do MySQL;
$ docker exec -it MySQL mysql -u root -psenha@12345678
- No SHELL, digite os seguintes comandos: (Lembrando que "remoto@123" é uma senha de demonstração)
mysql> CREATE USER 'santana'@'%' IDENTIFIED WITH mysql_native_password BY 'remoto@123';
Query OK, 0 rows affected (0.39 sec)
mysql> GRANT ALL PRIVILEGES ON *.* TO 'santana'@'%';
Query OK, 0 rows affected (0.47 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.27 sec)
$ mysql -u santana -p -h 172.17.0.3
O servidor MySQL foi instalado e configurado com sucesso!
Para acessar ao Banco de Dados, use os comandos: docker exec -it
, ou via qualquer cliente MySQL remoto.
Instruções adicionais:
$ docker ps (Lista todos os containes que estão sendo executados)
$ docker stop MySQL (Para o serviço)
$ docker start MySQL (Inicia o serviço)
$ docker restart MySQL (Reinicia o serviço)
Espero ter contribuido com o seu desenvolvimento de alguma forma.
Documentação detalhada: Consulte, Implementando MySQL no Linux com Docker ou Manual de Referência