Solução da comunidade

Instalar o MySQL no CasaOS com armazenamento Docker persistente

A 2023 CasaOS tutorial introduced MySQL installation; current Docker Official Image guidance now defines versions, persistence, and initialization variables.

Instale o MySQL no CasaOS utilizando a imagem Docker oficial, um volume persistente /var/lib/mysql e uma etiqueta de versão explícita. Não dependa de uma captura de ecrã antiga de 2023 nem de uma etiqueta flutuante latest para uma base de dados importante.

Em setembro de 2026, a imagem Docker oficial publica o MySQL 8.4 LTS, bem como linhas 9.x mais recentes/de inovação. Para serviços autoalojados de longa duração, a versão 8.4 é uma base de compatibilidade sensata, salvo se a sua aplicação suportar explicitamente uma versão principal mais recente.

Utilize a imagem oficial do MySQL

A Imagem Docker oficial do MySQL atual é mantida pela Comunidade Docker e pela Equipa do MySQL.

Escolha deliberadamente uma etiqueta de versão

Utilize uma etiqueta de versão principal/LTS fixa, como:

mysql:8.4

em vez de seguir cegamente latest, que pode passar para uma versão principal mais recente com alterações de compatibilidade.

Definições persistentes do CasaOS

  • Imagem: mysql:8.4
  • Porta do contentor: 3306
  • Volume persistente: caminho AppData do anfitrião → /var/lib/mysql
  • MYSQL_ROOT_PASSWORD: palavra-passe root forte para a inicialização
  • Opcional: MYSQL_DATABASE, MYSQL_USER, MYSQL_PASSWORD

Não exponha a porta 3306 à Internet

Se outra aplicação Docker no mesmo anfitrião precisar do MySQL, coloque ambos os serviços numa rede Docker partilhada e utilize o nome do serviço. Muitas vezes, não precisa de publicar a porta 3306.

Criar um utilizador da aplicação em vez de utilizar o root

Utilize MYSQL_DATABASE, MYSQL_USER, e MYSQL_PASSWORD durante a primeira inicialização para criar uma base de dados e uma conta específicas da aplicação.

Mantenha o root para administração e recuperação.

Compreender primeiro as variáveis de ambiente da primeira execução

A imagem oficial inicializa a base de dados apenas quando o diretório de dados está vazio. Alterar posteriormente as variáveis de ambiente de inicialização não reescreve automaticamente as contas ou bases de dados existentes.

Fazer cópias de segurança com dumps lógicos

Para cópias de segurança portáteis, utilize mysqldump ou do padrão documentado da imagem oficial para exportar/restaurar, em vez de copiar ficheiros de base de dados ativos enquanto o MySQL está a escrever.

Ligar o phpMyAdmin ou outra aplicação pelo nome do serviço

Numa rede Docker partilhada, uma aplicação web pode ligar-se ao MySQL através de um nome de serviço/contentor, como mysql. Dentro de outro contentor, localhost refere-se ao próprio contentor.

O guia de rede do Docker explica esse modelo de rede de contentores.

Verifique o estado do MySQL antes de ligar outras aplicações

Após o primeiro arranque, não aponte imediatamente as aplicações de produção para a base de dados. Verifique os registos do contentor e confirme que o MySQL concluiu a inicialização, em vez de permanecer num ciclo de reinício.

docker logs mysql
docker exec -it mysql mysqladmin -uroot -p ping

Um servidor em bom estado deve responder após a conclusão da configuração inicial da base de dados. O primeiro arranque pode demorar mais tempo, porque a imagem cria as tabelas do sistema, os utilizadores e a base de dados solicitada.

Planeie o conjunto de caracteres e o fuso horário antes de importar os dados

As aplicações podem ter requisitos específicos de agrupamento, conjunto de caracteres ou fuso horário. Se estiver a migrar uma base de dados existente, compare a versão major e a configuração do MySQL do servidor antigo antes de importar.

Não assuma que uma aplicação testada no MySQL 8.0 suportará automaticamente o MySQL 9.x apenas porque o contentor é iniciado. Fixe a versão major exigida pelo fornecedor da aplicação.

Separe o armazenamento da base de dados das pastas partilhadas gerais

Os ficheiros de dados do MySQL devem estar num armazenamento local fiável, com permissões consistentes e baixa latência. Não os coloque /var/lib/mysql numa montagem SMB não fiável ou numa unidade amovível só porque tem mais capacidade.

Se o anfitrião CasaOS tiver um SSD e um conjunto de HDD de maior capacidade, o SSD é frequentemente a melhor localização para a base de dados, enquanto os dumps agendados podem ser copiados para o armazenamento de cópia de segurança de maior capacidade.

Perguntas frequentes

Devo utilizar mysql:latest?

Prefira uma etiqueta major/LTS definida deliberadamente para uma utilização semelhante à produção, para que uma extração normal não avance inesperadamente para versões major superiores.

Onde devem persistir os dados do MySQL?

Mapeie uma pasta AppData do anfitrião para /var/lib/mysql.

Preciso de publicar a porta 3306?

Não, quando apenas outros contentores na mesma rede Docker precisam da base de dados.

Posso alterar MYSQL_ROOT_PASSWORD mais tarde editando a variável do contentor?

Não de forma fiável após a inicialização. Gira as contas de base de dados existentes a partir do próprio MySQL.