[Docker] Instale o banco de dados MySQL no Docker


点击跳转: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/datano /var/lib/mysqponto 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

4. Referências

Instale o MySQL 8.0 em um ambiente de produção

Acho que você gosta

Origin blog.csdn.net/yuchangyuan5237/article/details/132014810
Recomendado
Clasificación