Creare Utenti
MySQL: come creare un utente e gestire i permessi da riga di comando
In questa guida vediamo come creare un nuovo utente in MySQL e assegnargli permessi specifici lavorando direttamente da terminale. Si presuppone che il server MySQL (o uno stack LAMP) sia già installato e funzionante.
Per iniziare, aprite il terminale di Linux e accedete prima come utente root di sistema e poi al prompt di MySQL:
Una volta effettuato l'accesso a MySQL, possiamo procedere con un esempio pratico creando l'utente marco:
su
# Inserite la password di root di Linux
mysql -u root -p
# Inserite la password dell'utente root di MySQL
Descrizione
CREATE USER 'marco'@'localhost' IDENTIFIED BY 'MarcoLinuxMan1!';
Nota: È buona norma scrivere i comandi SQL in maiuscolo.
- marco: nome utente per l'accesso.
- MarcoLinuxMan1!: password scelta per l'utente.
- localhost: indica che l'utente potrà connettersi solo dal server locale.
Gli apici singoli attorno a utente, host e password sono obbligatori.
Verifichiamo che l'utente sia stato creato correttamente interrogando la tabella del sistema:
SELECT User, Host FROM mysql.user;
+------------------+-----------+
| User | Host |
+------------------+-----------+
| marco | localhost |
| debian-sys-maint | localhost |
| mysql.session | localhost |
| mysql.sys | localhost |
| root | localhost |
+------------------+-----------+
5 rows in set (0.00 sec)
Ora creiamo un database su cui far lavorare il nostro nuovo utente, chiamandolo test:
CREATE DATABASE test;
Verifichiamo la presenza del database con il comando:
SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| test |
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
Gestione dei permessi
Assegniamo all'utente marco tutti i permessi sul database test:
GRANT ALL PRIVILEGES ON test.* TO 'marco'@'localhost';
Utilizzando ALL PRIVILEGES concediamo il controllo completo sul database selezionato. Se invece vogliamo limitare l'accesso, possiamo sostituire ALL con permessi specifici:
- SELECT: permette di leggere i dati all'interno delle tabelle.
- INSERT: permette di inserire nuovi dati nelle tabelle.
- UPDATE: permette di modificare i dati esistenti.
- DELETE: permette di eliminare record dalle tabelle.
- CREATE: permette di creare nuove tabelle o database.
- DROP: permette di eliminare tabelle o l'intero database.
- EXECUTE: permette di eseguire routine e stored procedure.
- GRANT OPTION: permette all'utente di concedere i propri privilegi ad altri utenti.
Infine, aggiorniamo la tabella dei privilegi per applicare subito le modifiche:
FLUSH PRIVILEGES;
Buon lavoro!

