promovaweb-devops-review-mysql-stack
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseReview MySQL (Percona) Stack
MySQL(Percona)栈审核
Executa uma auditoria completa do arquivo e reporta conformidade, problemas e sugestões.
mysql.yaml对文件执行完整审计,并报告合规性、问题及优化建议。
mysql.yamlInstruções de Execução
执行说明
Quando esta skill for invocada, siga exatamente este roteiro:
调用本技能时,请严格遵循以下流程:
Passo 1 — Ler os arquivos
步骤1 — 读取文件
Leia o arquivo completo. Leia também para verificar a consistência das credenciais de banco usadas pelos serviços dependentes.
mysql.yamlmautic.yaml完整读取文件,同时读取文件,校验依赖服务使用的数据库凭证一致性。
mysql.yamlmautic.yamlPasso 2 — Executar todos os checks abaixo
步骤2 — 执行以下所有检查
Execute cada bloco de verificação e registre os resultados (✅ OK / ⚠️ Atenção / ❌ Erro).
执行每个检查项并记录结果(✅ 正常 / ⚠️ 注意 / ❌ 错误)。
Passo 3 — Gravar o resultado
步骤3 — 保存结果
Grave o relatório completo em um arquivo chamado mysql.audit.md.
将完整报告保存为名为mysql.audit.md的文件。
Checks de Verificação
检查项
1. Imagem (Percona)
1. 镜像(Percona)
Verifique o anchor :
x-percona-image- A imagem deve ser (não
percona/percona-server:<versão>)mysql:latest - A versão deve ser fixada (ex: ) — não usar
8.4.7em produçãolatest - Verificar se a versão é compatível com os clients MySQL dos serviços dependentes (Mautic)
检查锚点:
x-percona-image- 镜像必须为(不得使用
percona/percona-server:<版本号>)mysql:latest - 版本必须固定(例如:)——生产环境禁止使用
8.4.7标签latest - 校验版本是否与依赖服务(Mautic)的MySQL客户端兼容
2. Variáveis de Ambiente
2. 环境变量
Verifique o anchor :
x-percona-env- — deve existir e não deve ser o placeholder
MYSQL_ROOT_PASSWORDSENHA_ROOT - Verificar se está definido para o banco do Mautic (ex:
MYSQL_DATABASE)mautic - Verificar se está definido para o usuário do Mautic (ex:
MYSQL_USER)mautic - Verificar se está definido para o usuário do Mautic — não deve ser
MYSQL_PASSWORDSENHA_MAUTIC - Alertar se apenas estiver definido (serviços devem usar usuário dedicado, não root)
MYSQL_ROOT_PASSWORD
检查锚点:
x-percona-env- — 必须存在,且不得为占位符
MYSQL_ROOT_PASSWORDSENHA_ROOT - 校验是否设置为Mautic的数据库名(例如:
MYSQL_DATABASE)mautic - 校验是否设置为Mautic的数据库用户名(例如:
MYSQL_USER)mautic - 校验是否设置为Mautic用户的密码——不得为占位符
MYSQL_PASSWORDSENHA_MAUTIC - 如果仅设置了需发出告警(业务服务应使用专用数据库用户,不得使用root)
MYSQL_ROOT_PASSWORD
3. Serviço
3. 服务
Verifique se o serviço está presente e corretamente configurado.
mysql检查服务是否存在且配置正确。
mysql4. Portas Expostas
4. 暴露端口
- — verificar se a porta está exposta externamente
3306:3306 - Alertar se a porta 3306 estiver exposta em produção (risco de segurança)
- Recomendar uso de rede interna Docker Swarm sem exposição de porta se não for necessário acesso externo
- — 校验端口是否对外暴露
3306:3306 - 生产环境如果暴露3306端口需发出告警(存在安全风险)
- 若无外部访问需求,建议使用Docker Swarm内部网络,不暴露端口
5. Volumes
5. 卷
- — deve ser declarado como
percona_dataexternal: true - Verificar se o volume está montado em
/var/lib/mysql - Alertar se o volume não for externo (dados perdidos em redeploy)
- — 必须声明为
percona_dataexternal: true - 校验卷是否挂载到路径
/var/lib/mysql - 如果卷不是外部卷需发出告警(重新部署时会丢失数据)
6. Réplicas
6. 副本数
| Serviço | Réplicas Esperadas | Observação |
|---|---|---|
| 1 | MySQL standalone — não deve ter mais de 1 réplica sem configuração de cluster |
Alertar se houver mais de 1 réplica (pode causar corrupção de dados sem configuração de replicação adequada).
| 服务 | 预期副本数 | 备注 |
|---|---|---|
| 1 | 单机版MySQL——若无合适的集群配置,副本数不得超过1 |
如果副本数超过1需发出告警(无合理复制配置时可能导致数据损坏)。
7. Recursos do Container
7. 容器资源
| Serviço | CPU Mínimo | Memória Máxima |
|---|---|---|
| "1" | 1024M |
- Alertar se memória for inferior a 512M
- Verificar se os limites são adequados para a carga esperada
| 服务 | 最低CPU配置 | 最大内存配置 |
|---|---|---|
| "1" | 1024M |
- 如果内存低于512M需发出告警
- 校验资源限制是否适配预期负载
8. Configuração de Deploy
8. 部署配置
- — deve ser
mode: replicatedreplicated - — deve incluir
placement.constraintsnode.role == manager - Verificar se há constraints adicionais de hostname para fixar o banco em um nó específico
- Verificar se há com
update_configfailure_action: rollback
- — 必须设置为
mode: replicatedreplicated - — 必须包含
placement.constraintsnode.role == manager - 校验是否有额外的主机名约束,将数据库固定在特定节点
- 校验是否配置了且设置了
update_configfailure_action: rollback
9. Redes
9. 网络
- O serviço deve estar na rede
network_swarm_public - A rede deve ser declarada como
external: true
- 服务必须加入网络
network_swarm_public - 该网络必须声明为
external: true
10. Segurança
10. 安全
- não deve ser
MYSQL_ROOT_PASSWORD(placeholder)SENHA_ROOT - não deve ser
MYSQL_PASSWORD(placeholder)SENHA_MAUTIC - Porta 3306 exposta externamente — alertar como risco se não houver firewall configurado
- Recomendar uso de usuário dedicado por aplicação (não root)
- Verificar se o usuário tem permissões apenas no banco
mautic(princípio do menor privilégio)mautic
- 不得为占位符
MYSQL_ROOT_PASSWORDSENHA_ROOT - 不得为占位符
MYSQL_PASSWORDSENHA_MAUTIC - 3306端口对外暴露——若无防火墙配置需作为风险项告警
- 建议每个应用使用专用数据库用户(不得使用root)
- 校验用户是否仅拥有
mautic库的权限(最小权限原则)mautic
Formato do Relatório de Saída
输出报告格式
Ao final, produza um relatório estruturado:
undefined执行完成后,输出结构化报告:
undefinedRelatório de Auditoria — mysql.yaml
Relatório de Auditoria — mysql.yaml
Data: <data atual>
Data: <data atual>
Resumo
Resumo
- Total de checks: X
- ✅ OK: X
- ⚠️ Atenções: X
- ❌ Erros: X
- Total de checks: X
- ✅ OK: X
- ⚠️ Atenções: X
- ❌ Erros: X
Resultados por Categoria
Resultados por Categoria
1. Imagem
1. Imagem
✅ percona/percona-server:8.4.7: versão fixada
...
✅ percona/percona-server:8.4.7: versão fixada
...
2. Variáveis de Ambiente
2. Variáveis de Ambiente
❌ MYSQL_ROOT_PASSWORD: usando placeholder SENHA_ROOT — troque antes do deploy
⚠️ MYSQL_USER/MYSQL_PASSWORD: não definidos — serviços como Mautic usarão root?
...
❌ MYSQL_ROOT_PASSWORD: usando placeholder SENHA_ROOT — troque antes do deploy
⚠️ MYSQL_USER/MYSQL_PASSWORD: não definidos — serviços como Mautic usarão root?
...
3. Serviço
3. Serviço
✅ mysql: presente
✅ mysql: presente
4. Portas
4. Portas
⚠️ Porta 3306 exposta externamente — garanta que firewall está configurado
...
⚠️ Porta 3306 exposta externamente — garanta que firewall está configurado
...
5. Volumes
5. Volumes
✅ percona_data: volume externo configurado em /var/lib/mysql
...
✅ percona_data: volume externo configurado em /var/lib/mysql
...
6. Réplicas
6. Réplicas
✅ mysql: 1 réplica (correto para standalone)
...
✅ mysql: 1 réplica (correto para standalone)
...
7. Recursos
7. Recursos
✅ 1024M de memória configurada
...
✅ 1024M de memória configurada
...
8. Deploy
8. Deploy
✅ node.role == manager: placement correto
⚠️ update_config não definido
...
✅ node.role == manager: placement correto
⚠️ update_config não definido
...
9. Redes
9. Redes
✅ network_swarm_public: configurado como external
...
✅ network_swarm_public: configurado como external
...
10. Segurança
10. Segurança
❌ MYSQL_ROOT_PASSWORD: placeholder SENHA_ROOT detectado
⚠️ Porta 3306 exposta: certifique-se de que firewall bloqueia acesso externo
⚠️ Sem usuário dedicado para Mautic — use MYSQL_USER/MYSQL_DATABASE/MYSQL_PASSWORD
...
❌ MYSQL_ROOT_PASSWORD: placeholder SENHA_ROOT detectado
⚠️ Porta 3306 exposta: certifique-se de que firewall bloqueia acesso externo
⚠️ Sem usuário dedicado para Mautic — use MYSQL_USER/MYSQL_DATABASE/MYSQL_PASSWORD
...
Ações Recomendadas (por prioridade)
Ações Recomendadas (por prioridade)
Crítico (fazer antes do deploy)
Crítico (fazer antes do deploy)
- ...
- ...
Recomendado
Recomendado
- ...
- ...
Opcional
Opcional
- ...
undefined- ...
undefined