Logo MySQL

Creare e dare i permessi a un utente MySQL

Normalmente, quando si crea un nuovo database su MySQL, non è mai una buona idea utilizzare l’utente root per fare le operazioni classiche.

Ciò è amplificato se si vogliono collegare le credenziali a un CMS open source: i pericoli di attacco sono dietro l’angolo, in caso di bug, infatti, un possibile attaccante potrebbe prendere possesso dell’intero DB e di tutti quelli presenti sulla stessa macchina. Sarebbe un disastro.

È buona norma quindi creare un utente singolo per ogni database in nostro possesso, dando a questo pochi permessi, il minimo indispensabile per far funzionare il software.

Come creare un nuovo utente

Attraverso la shell di MySQL andiamo a digitare:

CREATE USER 'nomeutente'@'localhost' IDENTIFIED BY 'password';

Come si può notare abbiamo creato un utente sul DB MYSQL in localhost, assegnandogli anche una password. Naturalmente se l’host dovesse essere in remoto sostituiremo localhost con l’indirizzo in nostro possesso.

Questo utente creato non ha alcun permesso, si tratta semplicemente di un record all’intero di una tabella per ora. Se si prova (invitiamo a farlo) a collegarsi con questo utente, infatti, si noterà che non ci sono database collegati, né tantomeno ne potrà creare.

Assegnare permessi a un utente

Per dare i permessi a questo utente, loggati da root (o da altro utente con privilegi simili), digitare il seguente comando su shell:

GRANT ALL PRIVILEGES ON *.* TO 'nomeutente'@'localhost';

Così facendo abbiamo praticamente dato gli stessi privilegi root all’utente “nomeutente”.

Prima che diventino operativi, però, bisogna digitare:

FLUSH PRIVILEGES;

I cambiamenti ora sono attivi e funzionanti.

Permessi MySQL

Abbiamo però detto, in apertura, che non è una buona idea dare tutti i permessi a un utente. Quindi ecco la lista dei permessi:

  • ALL PRIVILEGES: come detto nell’esempio precedente, questo permesso da tutti i diritti all’utente, trasformandolo in root;
  • CREATE: da il diritto di creare database e tabelle;
  • DROP: permette di cancellare database o tabelle;
  • DELETE: consente di cancellare righe dalle tabelle;
  • INSERT: da il diritto di inserire nuovi record all’interno delle tabelle;
  • SELECT: si tratta del comando base, da la possibilità di selezionare e visualizzare i record;
  • UPDATE: consente di fare update sui record di tabella;
  • GRANT OPTION: può dare e togliere i permessi agli altri utenti;

Evidentemente per assegnare un permesso la strada da percorrere è quella già fatto in precedenza:

GRANT {permesso} ON {nome del db}.{tabella o * per tutto il db} TO 'nomeutente'@'localhost';

Ogni volta che cambiate i permessi ricordate di fare il flush dei privilegi.

Revocare permessi MySQL

Fino a ora abbiamo spiegato come dare i permessi, ma mai come revocarli.

La struttura del comando è sostanzialmente la stessa, dobbiamo semplicemente sostituire GRANT con REVOKE:

REVOKE {permesso} ON {nome del db}.{tabella o * per tutto il db} TO 'nomeutente'@'localhost';

Se invece vogliamo completamente pulire, eliminando l’utente, il comando è il medesimo della cancellazione di una tabella:

DROP USER 'nomeutente'@'localhost'

Prima di cancellarlo però provate a loggarvi con le credenziali e usatelo:

Chiudete quindi con l’utente root:

quit

e loggatevi con l’utenza creata:

mysql -u nomeutente -p

digitate la password e sarete dentro.


Pubblicato

in

Tag:

Per: