# πŸš€ GUIDA MARIADB - PULIZIA IP DATABASE ## βœ… PROBLEMA RISOLTO **Errore MariaDB**: Sintassi delimiter non riconosciuta **Soluzione**: File SQL specifico per MariaDB con `DELIMITER $$` --- ## πŸ› οΈ INSTALLAZIONE RAPIDA ### 1. Connettiti al database MariaDB: ```bash mysql -h TUO_SERVER_IP -u USERNAME -p DATABASE_NAME ``` ### 2. Esegui il file SQL per MariaDB: ```bash # Da command line: mysql -h SERVER_IP -u USERNAME -p DATABASE_NAME < cleanup_ddos_ips_mariadb.sql # Oppure all'interno di mysql: SOURCE cleanup_ddos_ips_mariadb.sql; ``` ### 3. Verifica installazione: ```sql SHOW PROCEDURE STATUS WHERE Db = DATABASE() AND Name LIKE 'cleanup%'; ``` --- ## 🎯 COMANDI RAPIDI DISPONIBILI ### ⚑ Pulizie Ultra-Rapide: ```sql -- Simulazioni (dry run): CALL cleanup_1h_dry(); -- Test pulizia 1 ora CALL cleanup_12h_dry(); -- Test pulizia 12 ore CALL cleanup_24h_dry(); -- Test pulizia 24 ore -- Pulizie reali: CALL cleanup_1h(); -- Pulisci IP > 1 ora CALL cleanup_12h(); -- Pulisci IP > 12 ore CALL cleanup_24h(); -- Pulisci IP > 24 ore ``` ### πŸ”§ Comandi Completi: ```sql -- Pulizie orarie personalizzate: CALL cleanup_ddos_ips_hours_fixed(6, 'ddos_detect_v03', TRUE); -- Dry run 6h CALL cleanup_ddos_ips_hours_fixed(8, 'ddos_detect_v03', FALSE); -- Pulizia 8h -- Pulizie basate su giorni: CALL cleanup_ddos_ips_fixed(3, 'ddos_detect_v03', TRUE); -- Dry run 3 giorni CALL cleanup_ddos_ips_fixed(7, 'ddos_detect_v03', FALSE); -- Pulizia 7 giorni ``` --- ## πŸ“Š VERIFICA RISULTATI ### 1. Controlla log recenti: ```sql SELECT * FROM ip_cleanup_log WHERE operation_time >= DATE_SUB(NOW(), INTERVAL 1 HOUR) ORDER BY operation_time DESC LIMIT 5; ``` ### 2. Statistiche IP per lista: ```sql SELECT list_name, COUNT(*) as total_ips, MIN(retrieved_at) as oldest_ip, MAX(retrieved_at) as newest_ip FROM ip_list GROUP BY list_name; ``` ### 3. IP vecchi da pulire: ```sql -- IP piΓΉ vecchi di 1 ora SELECT COUNT(*) as ip_1h_old FROM ip_list WHERE list_name = 'ddos_detect_v03' AND retrieved_at < DATE_SUB(NOW(), INTERVAL 1 HOUR); -- IP piΓΉ vecchi di 12 ore SELECT COUNT(*) as ip_12h_old FROM ip_list WHERE list_name = 'ddos_detect_v03' AND retrieved_at < DATE_SUB(NOW(), INTERVAL 12 HOUR); ``` --- ## πŸ“ˆ OUTPUT ESEMPI ### βœ… Successo Dry Run: ``` πŸ” DRY RUN ORARIO: Verrebbero rimossi 245 IP dalla lista ddos_detect_v03 (>1h) ``` ### βœ… Successo Pulizia: ``` βœ… PULIZIA ORARIA COMPLETATA: Rimossi 245 IP dalla lista ddos_detect_v03 (>1h) ``` ### ℹ️ Nessuna Pulizia: ``` ℹ️ NESSUNA PULIZIA ORARIA NECESSARIA: Tutti gli IP in ddos_detect_v03 sono piΓΉ recenti di 1 ore ``` --- ## πŸ”„ WORKFLOW SUGGERITO ### 1. Test Iniziale: ```sql -- Vedi quanti IP hai SELECT list_name, COUNT(*) FROM ip_list GROUP BY list_name; -- Test dry run per vedere cosa succede CALL cleanup_1h_dry(); ``` ### 2. Prima Pulizia: ```sql -- Pulizia conservativa di 24 ore CALL cleanup_24h(); -- Verifica risultato SELECT * FROM ip_cleanup_log WHERE operation_time >= DATE_SUB(NOW(), INTERVAL 10 MINUTE); ``` ### 3. Pulizie Regolari: ```sql -- Pulizia quotidiana automatica (piΓΉ aggressiva) CALL cleanup_12h(); -- Pulizia settimanale completa CALL cleanup_ddos_ips_fixed(7, 'ddos_detect_v03', FALSE); ``` --- ## πŸ›‘οΈ SICUREZZA - βœ… **Transazioni**: Rollback automatico su errori - βœ… **Logging**: Ogni operazione tracciata - βœ… **Dry Run**: Test sempre prima di cancellare - βœ… **Backup**: Fai backup prima di pulizie massive --- ## πŸ› TROUBLESHOOTING ### Errore "Table doesn't exist": ```sql -- Verifica tabelle esistenti SHOW TABLES LIKE '%ip%'; SHOW TABLES LIKE '%log%'; ``` ### Procedure non trovata: ```sql -- Lista tutte le procedure SHOW PROCEDURE STATUS WHERE Db = DATABASE(); ``` ### Nessun IP cancellato: ```sql -- Verifica permessi DELETE SHOW GRANTS FOR CURRENT_USER(); -- Test query manuale SELECT COUNT(*) FROM ip_list WHERE list_name = 'ddos_detect_v03' AND retrieved_at < DATE_SUB(NOW(), INTERVAL 1 HOUR); ``` --- ## 🎯 COMANDI PREFERITI ```sql -- I 3 comandi che userai di piΓΉ: CALL cleanup_1h_dry(); -- Test veloce CALL cleanup_12h(); -- Pulizia normale CALL cleanup_24h_dry(); -- Verifica pulizia giornaliera ``` πŸ’‘ **Ora dovrebbe funzionare perfettamente con MariaDB!** πŸš€