Diretório de artigos
- 1. Introdução
- 2. Instale o serviço MySQL no Docker
-
- 2.1. Veja as versões disponíveis do MySQL
- 2.2. Extraia a imagem MySQL
- 2.3. Ver espelho local
- 2.4. Executando o contêiner
- 2.5. Visualize contêineres em execução
- 2.6. Visualização do interior do contêiner
- 2.7. Autorizar login remoto root
- 2.8. Conecte-se ao MySQL no contêiner do host
- 2.9. Use Navicat para conectar-se ao MySQL do contêiner
- 3. Se for MySQL8.0, pode ser necessário executar
- 4. Referências
点击跳转:Docker安装MySQL、Redis、RabbitMQ、Elasticsearch、Nacos等常见服务全套(质量有保证,内容详情)
1. Introdução
Embora instalar o mysql com docker não seja uma boa solução, para conveniência de uso pessoal, ainda não há problema em usar o docker para instalar o mysql.
E o arquivo host é montado no container durante a instalação, o que garante a persistência do mysql e também é muito amigável para desenvolvimento e teste.
2. Instale o serviço MySQL no Docker
A seguir, tomamos a versão mysql5.7 como exemplo. As etapas para mysql8.0 também são as mesmas.
2.1. Veja as versões disponíveis do MySQL
# 搜索镜像
docker search mysql
2.2. Extraia a imagem MySQL
# 拉取镜像
docker pull mysql:5.7
# 或者
docker pull mysql:latest
2.3. Ver espelho local
Use o seguinte comando para verificar se a imagem mysql está instalada
docker images
2.4. Executando o contêiner
MySQL é um banco de dados relacional comumente usado. Geralmente, esperamos que ele possa salvar dados permanentemente. Mesmo se o contêiner for excluído, os dados não serão excluídos. Neste momento, você precisa montar a pasta host no contêiner. Isso pode certifique-se de que mesmo que o contêiner O contêiner MySQL recém-criado após a exclusão possa usar os dados anteriores.
- Prepare o diretório local primeiro
mkdir -p /mydata/mysql/log
mkdir -p /mydata/mysql/data
mkdir -p /mydata/mysql/conf
- Monte o diretório e inicie o contêiner
# Docker启动MySQL容器
docker run -p 3306:3306 --name mysql \
-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7
-p 3306:3306
: Especifique o relacionamento de mapeamento entre a porta do host e a porta do contêiner
-v
:Monte a pasta host/mydata/mysql/data
no/var/lib/mysq
ponto de montagem do contêiner
-e
:Especifique as variáveis exigidas pelo contêiner
-it
: representa um terminal interativo;
-d
:Execute o contêiner mysql em segundo plano
2.5. Visualize contêineres em execução
# 查看正在运行的容器
docker ps
# 查看所有的docker容器
docker ps -a
Se o status ativo for exibido neste momento, significa que a inicialização foi bem-sucedida. Se estiver reiniciando, há algo errado. Podemos visualizar os logs:
docker logs -f mysql
2.6. Visualização do interior do contêiner
docker exec -it mysql /bin/bash
2.7. Autorizar login remoto root
- Entre no contêiner
docker exec -it mysql /bin/bash
- Entrar mysql
mysql -uroot -p
- Visualizar usuários e plug-ins
mysql> use mysql;
Database changed
mysql> select host,user,plugin from user;
+-----------+---------------+-----------------------+
| host | user | plugin |
+-----------+---------------+-----------------------+
| localhost | root | mysql_native_password |
| localhost | mysql.session | mysql_native_password |
| localhost | mysql.sys | mysql_native_password |
| % | root | mysql_native_password |
+-----------+---------------+-----------------------+
4 rows in set (0.00 sec)
mysql>
Verificando os resultados, não apenas vi root@'localhost'
, root@'%'
mas root@'%'
também vi que as contas que permitiam login remoto eram diferentes dos resultados que esperávamos. Só posso dizer que a imagem do docker do mysql é bastante cuidadosa. Eu sei que o docker é mais usado para desenvolvimento e teste. , defina o login remoto root diretamente para as configurações de fábrica.
- Apenas sair
2.8. Conecte-se ao MySQL no contêiner do host
# 用命令行测试端口连通性
telnet localhost 3306
# 查看能不能连接上MySQL
mysql -u root -P 3306 -h 127.0.0.1 -proot
# 查看容器日志
docker logs -f mysql
2.9. Use Navicat para conectar-se ao MySQL do contêiner
- Configurar parâmetros de conexão
- Conectado
3. Se for MySQL8.0, pode ser necessário executar
Devo dizer que a imagem docker do mysql é muito amigável. A configuração de produção padrão não apenas nos ajuda a cancelar as restrições de segurança, mas também permite que o root faça login remotamente e obtenha curtidas, curtidas e curtidas. Portanto, na verdade, você não precisa fazer nada nesta etapa. Se tiver alguma dúvida, continue para a próxima etapa.
Nota: A instalação do Docker do mysql geralmente é usada para desenvolvimento e teste, portanto, as configurações padrão de fábrica ajudam os usuários a fazer algumas configurações. No entanto, o mysql8.0 instalado no Linux tem algumas restrições de segurança e restrições de login remoto root por padrão.
3.1. Autorizar login remoto root
- Insira o contêiner mysql
docker exec -it mysql /bin/bash
- Entrar mysql
mysql -uroot -p
mysql> use mysql
Database changed
mysql> select host,user,plugin from user;
+-----------+------------------+-----------------------+
| host | user | plugin |
+-----------+------------------+-----------------------+
| % | root | caching_sha2_password |
| localhost | mysql.infoschema | caching_sha2_password |
| localhost | mysql.session | caching_sha2_password |
| localhost | mysql.sys | caching_sha2_password |
| localhost | root | caching_sha2_password |
+-----------+------------------+-----------------------+
5 rows in set (0.00 sec)
mysql>
Você pode ver que a conta é criada antes de sair da fábrica root@'%'
. Se não, crie você mesmo
- Criar conta root@'%'
mysql> create user root@'%' identified by 'root';
Query OK, 0 rows affected (0.01 sec)
mysql>
- Conceda todas as permissões à conta root@'%'
mysql> grant all on *.* to root@'%';
Query OK, 0 rows affected (0.00 sec)
mysql>
3.2. Cancelar restrições de força da senha
- Desinstale o componente "Verificar senha"
mysql> UNINSTALL COMPONENT 'file://component_validate_password';
ERROR 3537 (HY000): Component specified by URN 'file://component_validate_password' to unload has not been loaded before.
mysql>
A imagem mysql do Docker não é instalada por padrão
- Desinstale o plug-in "Verificar senha"
mysql> UNINSTALL PLUGIN validate_password;
ERROR 1305 (42000): PLUGIN validate_password does not exist
mysql>
A imagem mysql do Docker não é instalada por padrão