Habilitar phpMyAdmin por IP no HestiaCP é uma necessidade comum em manutenção urgente, mas também é um vetor de exposição se for feito sem controle. Neste artigo, documento o fluxo que uso em produção: liberar acesso de forma temporária, com usuário dedicado e camada de hardening para reduzir risco.
Quando usar este procedimento
Uso este modelo quando:
- preciso de intervenção rápida no banco sem acesso por túnel;
- equipe de suporte precisa validar tabela/opção em janela curta;
- acesso por domínio do painel está indisponível temporariamente.
Fora desses cenários, prefiro acesso via CLI ou túnel restrito.
Etapa 1: criar usuário administrativo dedicado no MySQL
Nunca uso root no phpMyAdmin. Crio conta separada para auditoria e revogação rápida.
mysql
CREATE USER 'admin_pma'@'localhost' IDENTIFIED BY 'SENHA_FORTE_AQUI';
GRANT ALL PRIVILEGES ON *.* TO 'admin_pma'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
Validação:
SHOW GRANTS FOR 'admin_pma'@'localhost';
Etapa 2: habilitar include do phpMyAdmin no Apache
No HestiaCP, o phpMyAdmin geralmente já está instalado, mas pode não estar habilitado na configuração de IP.
Arquivo típico:
/etc/apache2/conf.d/IP.conf
Garanta a diretiva:
IncludeOptional /etc/apache2/conf.d/*.inc
Teste sintaxe e recarregue:
apache2ctl -t
systemctl reload apache2
Etapa 3: validação funcional
Teste endpoint localmente:
curl -I http://SEU_IP/phpmyadmin
Se retornar 200 ou 302, o endpoint está publicado.
Acesse http://SEU_IP/phpmyadmin e autentique com admin_pma.
Hardening obrigatório após publicação
1) Restringir IP no firewall
Exemplo com UFW (ajuste para seu IP de administração):
ufw allow from 203.0.113.10 to any port 80 proto tcp
ufw allow from 203.0.113.10 to any port 443 proto tcp
2) Forçar HTTPS
Evite uso contínuo via HTTP. Em manutenção, prefira endpoint sob TLS válido.
3) Publicação temporária
Concluída a tarefa, remova exposição externa e mantenha apenas fluxo interno.
Erros comuns que já tratei
Endpoint abre, mas login falha
Causa: usuário MySQL com host diferente ('user'@'%' vs 'user'@'localhost').
Apache não recarrega
Causa: erro sintático no IP.conf ou include duplicado.
Validação sempre com apache2ctl -t antes de reload.
Bloqueio por WAF/firewall
Causa: regra de segurança barrando /phpmyadmin.
Ação: criar exceção temporária, rastrear logs e remover exceção após manutenção.
Rollback
Se precisar fechar rapidamente:
- remover/ajustar include em
IP.conf; apache2ctl -t;systemctl reload apache2;- bloquear IP/porta no firewall;
- opcionalmente revogar usuário criado.
Revogação de usuário:
DROP USER 'admin_pma'@'localhost';
FLUSH PRIVILEGES;
Conclusão
Habilitar phpMyAdmin por IP no HestiaCP pode ser seguro quando tratado como procedimento controlado: usuário dedicado, validação de configuração, restrição por IP e desativação após uso. O erro operacional é deixar o endpoint exposto como solução permanente.
Este post está licenciado sob CC BY-NC.
Comentários
Participe da discussão abaixo.
Comentários ainda não configurados. Adicione as opções do Cusdis em /assets/json/config/blog-comments-config.json.