Introduzione
MySQL è un'applicazione di database per Linux e parte del popolare stack LAMP (Linux, Apache, MySQL, PHP). Un'installazione MySQL include opzioni di gestione tramite un utente root o account utente specifici.
Per motivi di sicurezza, in genere è meglio creare e gestire i dati come utenti specifici.
In questo tutorial, scopri come creare account utente MySQL e come gestire i loro permessi e privilegi.

Prerequisiti
- Un server Linux con MySQL o MariaDB installato e in esecuzione
- Accesso alle credenziali utente root MySQL
- Accesso a una finestra di terminale/riga di comando (Ctrl-Alt-T / Ctrl-Alt-F2)
Come creare un nuovo utente MySQL
1. Prima di poter creare un nuovo utente MySQL, è necessario aprire una finestra del terminale e avviare la shell MySQL come utente root. Per farlo, inserisci il seguente comando:
sudo mysql –u root –p
2. Digita la password di root per questo account e premi Invio.

Il prompt dovrebbe cambiare per mostrare che sei in mysql> guscio.
3. Quindi, crea un nuovo utente MySQL con:
CREATE USER 'username' IDENTIFIED BY 'password';
Sostituisci nome utente e password con un nome utente e una password a tua scelta.
In alternativa, puoi configurare un utente specificando la macchina che ospita il database.
- Se stai lavorando sulla macchina con MySQL, usa [email protected] per definire l'utente.
- Se ti connetti da remoto, utilizza [email protected]_address e sostituisci indirizzo_ip con l'indirizzo effettivo del sistema remoto che ospita MySQL.
Pertanto, il comando sarà:
CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';
o
CREATE USER 'username'@'ip_address' IDENTIFIED BY 'password';
Puoi anche creare un utente che può connettersi da qualsiasi macchina con il comando:
CREATE USER 'username'@'%' IDENTIFIED BY 'password';
Come concedere autorizzazioni in MySQL
Prima di accedere con un nuovo account, assicurati di aver impostato le autorizzazioni per l'utente.
Le autorizzazioni sono azioni che l'utente può eseguire nel database. A seconda di quanta autorità desideri che il tuo utente abbia, puoi concedere loro uno, più o tutti i seguenti privilegi:
- Tutti i privilegi: L'account utente ha pieno accesso al database
- Inserisci: L'utente può inserire righe nelle tabelle
- Elimina: L'utente può rimuovere righe dalle tabelle
- Crea: L'utente può creare tabelle e database completamente nuovi
- Rilascia: L'utente può eliminare (rimuovere) intere tabelle e database
- Seleziona: L'utente ottiene l'accesso al comando select, per leggere le informazioni nei database
- Aggiornamento: L'utente può aggiornare le righe della tabella
- Opzione di concessione: L'utente può modificare i privilegi di altri account utente
La sintassi di base utilizzata per concedere privilegi a un account utente è:
GRANT permission_type ON database.table TO 'username'@'localhost';
Ad esempio, per concedere privilegi di inserimento a un utente MySQL eseguiresti il comando:
GRANT INSERT ON *.* TO 'username'@'localhost';
Puoi sostituire il livello di privilegio in base alle tue esigenze. Esegui il comando per ogni privilegio che desideri concedere.
Se desideri limitare l'accesso dell'utente a un database specifico, denomina il database prima del punto. Allo stesso modo, puoi limitare l'accesso di un utente a una determinata tabella nominandola dopo il punto, come nel comando seguente:
GRANT INSERT *database_name.table_name* TO 'username'@'localhost';
Gestione utenti MySQL
Questa sezione ti aiuterà a elencare i privilegi detenuti da un account utente, togliere i privilegi a un utente ed eliminare completamente un account utente. Ti mostrerà anche come disconnettersi dall'account utente MySQL root e accedere nuovamente con l'account che hai appena creato.
Come elencare i privilegi dell'account utente MySQL
Per visualizzare tutti i privilegi correnti detenuti da un utente:
SHOW GRANTS FOR username;
Come concedere tutti i privilegi su un database in MySQL
Per concedere tutti i privilegi all'utente MySQL su tutti i database usa il comando:
GRANT ALL PRIVILEGES ON *.* TO 'database_user'@'localhost';
Tuttavia, puoi anche concedere tutti i privilegi a un account utente su un specifico database con il seguente comando:
GRANT ALL PRIVILEGES ON database_name.* TO 'database_user'@'localhost';
Per concedere tutti i privilegi a un account utente su una tabella specifica da un tipo di database:
GRANT ALL PRIVILEGES ON database_name.table_name TO 'database_user'@'localhost';
Revocare i privilegi dell'account utente MySQL
Per riprendere i privilegi di un utente specifico, utilizza il REVOKE
comando. Funziona in modo simile al comando GRANT, la sua sintassi di base è:
REVOKE permission_type ON database.table TO 'username'@'localhost';
Rimuovere un intero account utente
Per eliminare un account utente MySQL usa il comando:
DROP USER 'username'@'localhost';