Leobreda.net

Web, .Net,
SQL, Cloud...

Instalando o MySQL no Docker

Virtualizando o MySQL sem dependência do Sistema Operacional

Se você já possui um ambiente de desenvolvimento e queira instalar o MySQL sem dependência do Sistema Operacional, recomendo o uso de docker para não "sujar" o ambiente, pois sabemos que ambiente de desenvolvimento fica bagunçado conforme o passar do tempo.

Instalação do Docker

No Linux, ...

# apt-get install docker

Após instalação, inicialize o Docker, ...

# systemctl start docker.service

Para inicializar o docker no boot no Linux, ...

# systemctl enable docker.service

Criando volume:

# docker volume create mysql-volume

Instalando a imagem

# docker run --name container-mysql -p3306:3306 -v mysql-volume:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=senha -d mysql/mysql-server:latest

Onde:


Para verificar se a imagem foi instalada corretamente...

docker ps

Deverá retornar:

CONTAINER ID    IMAGE          				COMMAND       			CREATED    				STATUS      					PORTS              					NAMES
d54e7992094b	mysql/mysql-server:latest	"/entrypoint.sh mysq?"	Less than a second ago	Up 4 seconds (health: starting) 0.0.0.0:3306->3306/tcp, 33060/tcp	container-mysql

Acessando o container

docker exec -it container-mysql bash

Após entrar no container, acesse o console do MySql, que deverá pedir a senha. Lembre-se que parametrizamos a senha "senha" na instalação da imagem.

# mysql -u root -p

Ao logar com sucesso, deverá surgir o console do MySql. Crie um novo database:

mysql>CREATE DATABASE MINHA_BASE_DE_DADOS;
Query OK, 1 row affected (0.01 sec)

Conectando ao Mysql remotamente

Caso você instalou o MySql no Linux e deseja acessá-lo pelo Windows, verifique qual o IP do Linux.

# ifconfig

Se o mesmo retornou IP no formato IPv6, utilize o comando:

# ip -4 addr

Abra a porta 3306 no firewall:

# ufw allow 3306

Agora no Windows, verifique se há comunicação com o IP e a porta, realizando um teste via Telnet.
Suponha que o IP do Linux corresponda a 192.168.1.114, ...

C:>telnet 192.168.1.114 3306

Caso demorar para aparecer alguma resposta e surgir a mensagem de erro abaixo, significa que há problemas de comunicação, IP ou liberação de firewall.

C:>telnet 192.168.1.114 3306
A solicitação ping não pôde encontrar o host telnet. Verifique o nome e tente novamente.

Caso retornar alguma mensagem semelhante abaixo, significa que a comunicação fechou com sucesso, porém o IP de origem (no meu caso 192.168.1.105) não foi autorizado pelo MySQL.

C:>telnet 192.168.1.114 3306
Host '192.168.1.105' is not allowed to connect to this MySQL server
Conexão ao host perdida.

Para realizar a liberação do IP, volte ao console do MySQL no Linux e faça a liberação para QUALQUER IP.

mysql> update mysql.user set host='%' where user='root';
Query OK, 1 row affected (0.02 sec)

Saia do MySql, e faça o restart do container para surtir efeito da liberação do IP.

mysql> exit
# exit
# docker restart 0721

Onde 0721 corresponde ao CONTAINER ID. Você pode consultar tal informação no comando docker ps.

Volte para o Windows, abre o MySQL Workbench (https://dev.mysql.com/downloads/workbench/), crie uma nova conexão e verifique se foi bem sucedida.




Acessar todos os artigos »