MySQL da Riga di Comando — Tutorial 8: Gestione Utenti e Assegnazione dei Privilegi

Tutorial mysql da riga di comando by Antonio Parisi

In questo ottavo tutorial del nostro percorso dedicato a MySQL da riga di comando, chiudiamo il cerchio sulle competenze fondamentali di un Database Administrator. Fino ad ora abbiamo utilizzato l’utente root, che detiene poteri assoluti sul server. In un ambiente di produzione (e nei progetti web reali), usare root per collegare un’applicazione al database è una pratica altamente insicura.

Oggi impareremo a creare nuovi utenti dedicati e ad assegnare loro solo i permessi strettamente necessari.

1. Creare un Nuovo Utente

Per iniziare, accedi al prompt di MySQL come utente amministratore:

Bash

mysql -u root -p
Per creare un nuovo utente, che chiameremo app_utente, utilizziamo il comando CREATE USER. Dobbiamo specificare il nome, l’host da cui può connettersi (usiamo localhost se l’applicazione web e il database risiedono sullo stesso server) e la sua password:

SQL

CREATE USER 'app_utente'@'localhost' IDENTIFIED BY 'PasswordSicura123!';

Output previsto

Query OK, 0 rows affected (0.01 sec)
L’utente è stato creato ma, al momento, non può fare nulla, nemmeno visualizzare l’elenco dei database presenti.

2. Assegnare Privilegi Specifici (L’istruzione GRANT)

La regola d’oro della sicurezza informatica è il Principio del Privilegio Minimo: assegnare a un utente solo i permessi essenziali per svolgere il proprio lavoro.
Supponiamo di voler concedere ad app_utente i permessi di eseguire letture, inserimenti, modifiche e cancellazioni, ma esclusivamente sul database ecommerce creato nei tutorial precedenti:

SQL

GRANT SELECT, INSERT, UPDATE, DELETE ON ecommerce.* TO 'app_utente'@'localhost';

Output previsto

Query OK, 0 rows affected (0.01 sec)
Analizziamo il comando:
  • GRANT: l’istruzione per concedere i privilegi.
  • SELECT, INSERT, UPDATE, DELETE: la lista delle operazioni consentite.
  • ON ecommerce.*: indica che i permessi si applicano a tutte le tabelle (*) del database ecommerce.
  • TO 'app_utente'@'localhost': specifica il destinatario.
Se stessi configurando un CMS (come WordPress) che ha bisogno di creare e modificare le proprie tabelle in autonomia, gli assegneresti tutti i privilegi limitati a quel database:

SQL

GRANT ALL PRIVILEGES ON ecommerce.* TO 'app_utente'@'localhost';

3. Rendere Operative le Modifiche (FLUSH PRIVILEGES)

Dopo aver modificato i permessi con i comandi GRANT, è prassi standard dire a MySQL di ricaricare in memoria la tabella interna delle autorizzazioni per renderle attive immediatamente:

SQL

FLUSH PRIVILEGES;

Output previsto

Query OK, 0 rows affected (0.00 sec)

4. Revocare i Privilegi (L’istruzione REVOKE)

Se decidi che un utente non deve più avere la facoltà di cancellare dati, puoi revocare quel singolo permesso senza eliminare l’intero account.
Togliamo il permesso di eseguire DELETE all’utente appena creato:

SQL

REVOKE DELETE ON ecommerce.* FROM 'app_utente'@'localhost';

Output previsto

Query OK, 0 rows affected (0.01 sec)
(Da notare l’uso della particella FROM invece di TO rispetto al comando GRANT).

5. Eliminare un Utente (DROP USER)

Se un collaboratore lascia il progetto o un’applicazione viene dismessa, per ragioni di sicurezza l’utente relativo deve essere cancellato completamente dal server MySQL:

SQL

DROP USER 'app_utente'@'localhost';

Output previsto

Query OK, 0 rows affected (0.01 sec)

Nel prossimo ed ultimo Tutorial 9 daremo uno sguardo all’Analisi avanzata con le Subquery (Query annidate)

Antonio Parisi

Antonio Parisi

Cloud Solution Architect



Torna in alto