Uma aplicação web moderna e responsiva para visualizar e analisar os logs gerais do MySQL de forma intuitiva e organizada.
Interface moderna e intuitiva para análise de logs MySQL
- 🎨 Design gradiente moderno com animações suaves
 - 🔐 Código auditado e protegido contra vulnerabilidades
 - 💾 Configuração persistente (sem necessidade de reconfigurar)
 - 🎯 Filtragem inteligente de usuários
 - 📱 100% responsivo (desktop, tablet, mobile)
 
- ✨ Interface Moderna: Design limpo e responsivo com gradientes e animações
 - 🔐 Seguro: Proteção contra SQL Injection e XSS
 - 💾 Configurável: Salve credenciais do banco no navegador (localStorage)
 - 🎯 Filtros de Usuários: Whitelist/Blacklist de usuários MySQL
 - 📱 Responsivo: Funciona perfeitamente em desktop e mobile
 - ⚡ Single Page: Carregamento dinâmico via AJAX
 - 🎨 Visual Atraente: Gradientes modernos e ícones emoji
 
- Lista de threads ordenados por data
 - Agrupamento de queries idênticas
 - Contador de execuções por query
 - Visualização completa de SQL
 - Copiar queries com um clique
 
- Habilitar/Desabilitar general_log
 - Limpar logs com um clique
 - Testar conexão antes de salvar
 - Configuração persistente no navegador
 
- Nenhum: Mostra todos os usuários
 - Incluir apenas (Whitelist): Mostra SOMENTE usuários específicos
 - Excluir (Blacklist): Remove usuários específicos da visualização
 
- PHP 7.0 ou superior
 - MySQL 5.7 ou superior / MariaDB 10.2+
 - Extensão PDO MySQL habilitada
 - Navegador moderno com suporte a localStorage
 
git clone https://github.com/domwal/mysql-general-log-viewer.git
cd mysql-general-log-viewerEdite o arquivo de configuração do MySQL:
Windows (XAMPP):
C:\xampp\mysql\bin\my.ini
Windows (WAMP - MariaDB):
C:\wamp\bin\mariadb\mariadb10.6.22\my.ini
Linux:
/etc/mysql/mariadb.conf.d/50-server.cnf
Adicione as seguintes linhas na seção [mysqld]:
[mysqld]
general_log = 1
log_output = TABLE
general_log_file = mysql_query.logOu configure via linha de comando:
SET GLOBAL general_log = 1;
SET GLOBAL log_output = 'TABLE';
SET GLOBAL general_log_file = 'mysql_general_query.log';Execute os seguintes comandos no MySQL:
-- Criar usuário
CREATE USER 'userlog'@'%' IDENTIFIED BY 'userlog';
GRANT SELECT ON mysql.general_log TO 'userlog'@'%';
-- Permissão para limpar logs (opcional)
GRANT DROP ON mysql.general_log TO 'userlog'@'%';
FLUSH PRIVILEGES;
-- Criar procedure para habilitar/desabilitar log
DELIMITER //
CREATE PROCEDURE mysql.ToggleGeneralLog (IN log_state BOOLEAN)
BEGIN
    IF log_state THEN
        SET GLOBAL general_log = 1;
        SET GLOBAL log_output = 'table';
    ELSE 
        SET GLOBAL general_log = 0;
    END IF;
END // 
DELIMITER ;
-- Permissão para executar a procedure
GRANT EXECUTE ON PROCEDURE mysql.ToggleGeneralLog TO 'userlog'@'%';Abra o arquivo mysql_log_view.php e ajuste as credenciais padrão (linhas 94-97):
// Valores padrão
$mySqlServerName = "127.0.0.1";
$mySqlUserName   = "root";
$mySqlPassword   = "";
$mySqlDbName     = 'mysql';Coloque o arquivo em seu servidor web e acesse:
http://localhost/mysql_log_view.php
- Clique no botão ⚙️ Configurar no topo da página
 - Preencha os dados de conexão:
- Host: Endereço do servidor MySQL (ex: localhost, 127.0.0.1)
 - Usuário: Nome de usuário do MySQL (ex: root, userlog)
 - Senha: Senha do usuário
 
 - (Opcional) Clique em 🔌 Testar Conexão para verificar
 - Clique em 💾 Salvar para armazenar no navegador
 
As credenciais ficarão salvas no localStorage do navegador e serão carregadas automaticamente na próxima vez!
- Clique no botão 👥 Filtros no topo da página
 - Selecione o tipo de filtro:
- Nenhum: Mostra todos os usuários/conexões
 - Incluir apenas (Whitelist): Mostra SOMENTE os usuários que você listar
 - Excluir (Blacklist): Mostra todos EXCETO os usuários listados
 
 - Se escolheu include ou exclude, adicione os user_host:
- Digite um user_host por linha
 - Formato: 
usuario[usuario] @ host [ip] - Exemplo: 
root[root] @ localhost [127.0.0.1] 
 - Clique em 💾 Salvar Filtro
 
💡 Dica: Use o botão 👤 Copiar User Host (ao visualizar logs de um thread) para copiar o formato exato!
- Na barra lateral esquerda, você verá a lista de Thread IDs
 - Clique em qualquer Thread para ver os detalhes
 - Você verá:
- Tipo de comando (Query, Execute, etc)
 - Total de execuções (queries idênticas agrupadas)
 - Horário da execução
 - Query SQL completa
 
 - Clique em qualquer query para copiar para a área de transferência
 - Use 📄 Ver SQL Completa para ver todas as queries do thread em sequência
 
- 🗑️ Limpar Todo o Log: Remove TODOS os registros da tabela general_log
 - ✅ Habilitar General Log: Ativa o registro de logs (cuidado com performance!)
 - ❌ Desabilitar General Log: Desativa o registro (recomendado quando não usar)
 - 🔄 Atualizar: Recarrega a página com dados mais recentes
 
Este projeto foi auditado e protegido contra:
- ✅ SQL Injection - Prepared statements e validação
 - ✅ XSS - Escape completo de outputs
 - ✅ DoS - Limites de entrada
 - ✅ Input Validation - Whitelist e sanitização
 
Se você descobrir uma vulnerabilidade de segurança:
- NÃO abra uma issue pública
 - Envie um email privado descrevendo o problema
 - Aguarde resposta antes de divulgar publicamente
 - Será creditado pela descoberta (se desejar)
 
NÃO use em produção sem:
- HTTPS obrigatório
 - Sistema de autenticação
 - Headers de segurança (CSP, X-Frame-Options, etc)
 - Rate limiting
 - Configuração externa de credenciais (não deixe no código)
 - Firewall e restrição de IPs
 - Logs de auditoria
 
Recomendações:
- Use este projeto apenas em ambiente de desenvolvimento
 - Configure credenciais específicas (não use root)
 - Crie usuário MySQL com privilégios mínimos
 - Monitore o uso e desabilite general_log quando não estiver usando
 - Mantenha o PHP e MySQL atualizados
 
mysql-general-log-viewer/
├── mysql_log_view.php          # Aplicação principal
├── README.md                   # Este arquivo
├── LICENSE                     # Licença MIT
├── .gitignore                  # Arquivos ignorados pelo Git
├── LEIA-ME.txt                 # Instruções em português
└── PRIVACIDADE-GITHUB.md       # Análise de privacidade
Contribuições são bem-vindas! Por favor:
- Faça um Fork do projeto
 - Crie uma branch para sua feature (
git checkout -b feature/MinhaFeature) - Commit suas mudanças (
git commit -m 'Adiciona MinhaFeature') - Push para a branch (
git push origin feature/MinhaFeature) - Abra um Pull Request
 
- PHP: Use PSR-12, indentação de 4 espaços
 - JavaScript: Use const/let, indentação de 4 espaços
 - SQL: Palavras-chave em UPPERCASE
 - Segurança: Sempre use prepared statements e escape de outputs
 
- ✨ Interface moderna com gradientes
 - 🔐 Correções de segurança (SQL Injection, XSS)
 - 💾 Configuração persistente no navegador
 - 🎯 Sistema de filtros de usuários
 - 📱 Design responsivo
 - ⚡ Single page com AJAX
 
- 📊 Versão inicial básica
 
- localStorage não funciona em modo anônimo/privado
 - Requer JavaScript habilitado
 - Senhas armazenadas em base64 (não é criptografia real)
 
Erro de Conexão:
- Verifique se o MySQL está rodando
 - Confirme host, usuário e senha
 - Teste se a extensão PDO MySQL está habilitada: 
php -m | grep pdo_mysql 
Nenhum Log Aparece:
- Verifique se general_log está habilitado: 
SHOW VARIABLES LIKE 'general_log'; - Confirme que log_output está como 'TABLE'
 - Execute algumas queries para gerar logs
 
Página em Branco:
- Verifique erros no console do navegador (F12)
 - Ative error_reporting no PHP
 - Verifique permissões de arquivo
 
Filtros Não Funcionam:
- Limpe o cache do navegador
 - Verifique se o user_host está no formato correto
 - Use o botão "Copiar User Host" para garantir o formato
 
P: É seguro usar este projeto? R: Sim, o código foi auditado e protegido contra SQL Injection e XSS. Porém, para produção, adicione autenticação e HTTPS.
P: Posso usar em produção? R: Não recomendado. Este projeto é ideal para desenvolvimento e debug local. Para produção, implemente autenticação, HTTPS e outras camadas de segurança.
P: O general_log impacta a performance? R: Sim! O general_log registra TODAS as queries e pode impactar significativamente a performance. Use apenas para debug e desabilite quando não precisar.
P: Como faço backup dos logs?
R: Use o botão de exportar (quando implementado) ou execute: SELECT * FROM mysql.general_log INTO OUTFILE '/tmp/backup.csv';
P: Posso ver logs de outros bancos além do MySQL? R: Não. Este projeto é específico para MySQL/MariaDB general_log.
P: As credenciais salvas no navegador são seguras? R: São codificadas em base64 (não criptografadas). Não use em computadores compartilhados. Para mais segurança, não salve as credenciais.
P: Funciona com MySQL 8.0? R: Sim! Compatível com MySQL 5.7+, 8.0+ e MariaDB 10.2+.
P: Posso contribuir com o projeto? R: Sim! Pull requests são bem-vindos. Veja a seção "Contribuindo" acima.
- Sistema de autenticação básico
 - Exportar logs (CSV, JSON, SQL)
 - Pesquisa/filtro de queries
 
- Gráficos de estatísticas e performance
 - Análise de queries lentas
 - Favoritar/salvar queries importantes
 - Comparação de queries
 - Modo escuro
 
- Múltiplos idiomas (i18n)
 - API REST para integração
 - Dashboard com widgets personalizáveis
 - Alertas e notificações
 - Integração com ferramentas de monitoramento
 
Este projeto está licenciado sob a Licença MIT - veja o arquivo LICENSE para detalhes.
Desenvolvido com ❤️ para facilitar a análise de logs MySQL
- Comunidade PHP
 - Comunidade MySQL/MariaDB
 - Todos os contribuidores
 
Se encontrar problemas:
- Revise a documentação neste README
 - Verifique as credenciais do MySQL
 - Teste a conexão usando o botão "Testar Conexão"
 - Consulte as issues existentes
 - Abra uma nova issue com detalhes do problema
 
⚡ Tip: Use em ambiente de desenvolvimento para debugar queries! Nunca deixe general_log habilitado em produção - impacta performance.
🔒 Security: Este é um projeto open-source. Revise o código antes de usar em produção!