La maggior parte delle applicazioni web ha bisogno solo di leggere e scrivere dati — non crea mai tabelle, non elimina indici e non gestisce stored procedure. Concedendo solo SELECT, INSERT, UPDATE e DELETE, dai alla tua applicazione esattamente i permessi di cui ha bisogno e nulla di più.
Perché i Privilegi Solo Dati Sono Ideali per le Applicazioni
Un'applicazione web standard esegue quattro operazioni sui dati:
- SELECT — Leggere righe dalle tabelle (caricamento pagine, recupero record).
- INSERT — Aggiungere nuove righe (registrazioni utenti, invio form).
- UPDATE — Modificare righe esistenti (modifica profili, aggiornamento impostazioni).
- DELETE — Rimuovere righe (eliminazione post, pulizia sessioni).
Questi quattro privilegi coprono virtualmente ogni query che un CMS, piattaforma e-commerce o web app personalizzata eseguirà mai. Concedere privilegi aggiuntivi di struttura o amministrazione crea rischi inutili.
Metodo 1: Durante la Creazione dell'Utente
- Accedi a mysql.nobregas.org.
- Vai su Database Users > clicca Create User.
- Inserisci username, password e host.
- Seleziona il database di destinazione dal menu a tendina Grant to Database.
- La sezione Privileges appare con ALL PRIVILEGES selezionato.
- Deseleziona ALL PRIVILEGES per rivelare le caselle individuali.
- Sotto Data, seleziona: SELECT, INSERT, UPDATE, DELETE.
- Lascia tutte le caselle di Structure e Administration deselezionate.
- Clicca Create User.
Metodo 2: Tramite Manage (Utente Esistente)
- Vai su Database Users e clicca Manage sull'utente.
- Nella sezione Add Database Access, seleziona il database.
- Deseleziona ALL PRIVILEGES.
- Seleziona solo SELECT, INSERT, UPDATE, DELETE.
- Clicca Add Grant.
Metodo 3: Ridurre un Grant Esistente
Se un utente ha attualmente ALL PRIVILEGES e vuoi limitarlo ai soli dati:
- Clicca Manage sull'utente.
- Trova il database in Current Grants e clicca Edit.
- Deseleziona ALL PRIVILEGES.
- Seleziona solo SELECT, INSERT, UPDATE, DELETE.
- Clicca Save Changes.
Cosa Può Fare Questo Utente
| Operazione | Query di Esempio | Permesso? |
|---|---|---|
| Leggere dati | SELECT * FROM users |
Sì |
| Aggiungere righe | INSERT INTO orders (...) |
Sì |
| Modificare righe | UPDATE products SET price = 9.99 |
Sì |
| Rimuovere righe | DELETE FROM sessions WHERE expired = 1 |
Sì |
| Creare tabella | CREATE TABLE logs (...) |
No |
| Eliminare tabella | DROP TABLE users |
No |
| Modificare struttura | ALTER TABLE users ADD COLUMN age INT |
No |
Quando Usare Questa Configurazione
- WordPress, Joomla, Laravel, Django — Questi framework hanno bisogno solo di operazioni CRUD dopo la configurazione iniziale.
- Negozi e-commerce — WooCommerce, PrestaShop e piattaforme simili.
- API personalizzate — Backend REST o GraphQL che leggono e scrivono dati.
- Ambienti di hosting condiviso — Limita il raggio d'esplosione se le credenziali vengono compromesse.
Beneficio di Sicurezza
Se un attaccante ottiene accesso a un utente solo dati, non può:
- Eliminare o svuotare le tue tabelle.
- Modificare la struttura delle tabelle.
- Creare trigger o stored procedure.
- Causare danni strutturali irreversibili.
I tuoi dati potrebbero essere ancora a rischio, ma lo schema del database rimane intatto — rendendo il recupero significativamente più facile.