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:
- container-mysql é o nome que iremos dar a nossa imagem instalada.
- 3306:3306 é o de/para de porta TCP. Você pode alterar caso esteja utilizando a porta 3306 para outra coisa.
- mysql-volume:/var/lib/mysql é o diretório onde iremos rodar o volume criado. Na prática, será armazenado neste diretório o conteúdo da imagem.
- MYSQL_ROOT_PASSWORD=senha é a senha do usuário root. Substitua a palavra "senha" por qualquer outra coisa.
- mysql/mysql-server:latest é a última versão da imagem mysql-server.
Você poderá consultar demais versões em https://hub.docker.com/_/mysql
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.