Creare un nuovo utente in MySQL e Gestire i Permessi

Introduzione Per eseguire qualsiasi operazione in MySQL, solitamente si utilizza l’account root, con accesso completo a tutti i database. Tuttavia, in alcuni casi potrebbe essere necessario avere un utente con […]

Avatar di GB Factory
GB Factory 30 Giugno 2021

Introduzione

Per eseguire qualsiasi operazione in MySQL, solitamente si utilizza l'account root, con accesso completo a tutti i database. Tuttavia, in alcuni casi potrebbe essere necessario avere un utente con qualche restrizione. In questa guida impareremo quindi come creare un nuovo utente in MySQL e gestire i relativi permessi.

Come Creare un Nuovo Utente in MySQL

Iniziamo subito creando un nuovo utente dalla shell di MySQL con il seguente comando:

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

Attenzione: quando creiamo un nuovo utente MySQL dobbiamo specificare l'host dell'utente con localhost e non con l'IP pubblico del server. L'hostname localhost indica "questo computer" e viene trattato da MySQL in un modo particolare: quando un utente con quell'host prova ad accedere a MySQL tenterà di connettersi al server locale tramite un file socket Unix. Quindi localhost è utilizzato quando proviamo eseguiamo il comando mysql per connetterci al server MySQL locale.

A questo punto il nostro utente pincopallino non avrà alcun permesso in nessun database. Infatti, anche se proviamo ad accedere con il nostro nuovo account non potremmo raggiungere la shell di MySQL.

Quindi, la prima cosa da fare è di fornire all'utente l'accesso alle informazioni di cui avrà bisogno eseguendo il seguente comando:

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

Gli asterischi in questo comando si riferiscono rispettivamente ai database e alle tabelle a cui questo utente avrà accesso. Il comando consente all'utente di leggere, modificare ed eseguire qualsiasi attività in tutti i database e in tutte le tabelle.

Di conseguenza, con questo comando stiamo garantendo al nostro utente pincopallino i permessi completi di root per accedere a qualsiasi cosa e mentre potrebbe essere utile in alcuni casi, rischiamo di mettere a rischio il nostro database.

Una volta aver terminato di modificare i permessi per il tuo nuovo utente, assicurati sempre di ricaricare tutti i privilegi:

FLUSH PRIVILEGES;

Adesso i tuoi cambiamento sono operativi!

Gestire i Permessi degli Utenti MySQL

Di seguito è riportata una breve lista dei più comuni permessi che possono essere assegnati ad un utente su MySQL:

  • ALL PRIVILEGES: come abbiamo visto prima, questo permesso garantisce ad un utente l'accesso completo ad un determinato database, e in caso questo non fosse specificato, a tutto il sistema MySQL;
  • CREATE: creare nuove tabelle e/o database;
  • DROP: cancellare tabelle e/o database;
  • DELETE: cancellare una o più righe da una tabella;
  • INSERT: inserire una o più righe in una tabella;
  • SELECT: interrogare il database e ottenere informazioni;
  • UPDATE: aggiornare una o più righe di una tabella;
  • GRANT OPTION: aggiungere o rimuovere permessi da un altro utente.

Per aggiungere un determinato permesso a un utente, puoi utilizzare questo comando:

GRANTE permesso ON database.tabella TO 'pincopallino'@'localhost';

Se vuoi aggiungere quel determinato permesso a tutte le tabelle o a tutti i database, assicurati di inserire un asterisco ( * ) al posto di database e tabella nel comando.

Se vuoi revocare un permesso, il comando è identico al precedente, cambia solamente due parole:

REVOKE permesso ON database.tabella FROM 'pincopallino'@'localhost';

Ogni volta che modifichi i permessi di un utente, ricordati di ricaricare i privilegi con il comando che abbiamo visto in precedenza.

Puoi vedere in ogni momento che permessi ha a disposizione un determinato utente utilizzando il seguente comando:

Nel caso si desiderasse eliminare un utente, proprio come per le tabelle, si può utilizzare il comando DROP:

DROP USER 'pincopallino'@'localhost';

Per verificare che la configurazione appena effettuata funzioni come desiderato, è possibile uscire dall'account attuale e poi accedere con quello nuovo, utilizzando i seguenti due comandi:

quit
mysql -u pincopallino -p

Conclusione

Dopo aver letto questa guida dovresti avere una conoscenza di base su come creare nuovi utenti e garantire alcuni permessi per gestire i database in MySQL.