MySQL Gestire utenti e permessi : in questa lezione vedremo come creare nuovi utenti per il database e come gestire i loro permessi in base al ruolo che dovranno avere.
- creare un utente
- Assegnazione dei permessi
- Tipi di permessi MySQL
- Esempi di assegnazione permessi
- Revocare i permessi
- Eliminare un utente
- Assegnazioni permessi da GUI di phpMyAdmin
Creare un utente
Possiamo creare un utente attraverso diverse modalità, direttamente dalla shell di MySQL o da una GUI per MySQL questa può essere una web app come phpMyAdmin o un programma desktop come MySQL Workbench o DataGrip
La prima cosa che dovremmo fare è fare il login al DBMS
shell MySQL
Per fare il login nella shell di MySQL utilizziamo il comando mysql
seguito dai parametri che ci servono, nel seguente esempio indichiamo la porta, l’host, l’utente la password ed il database
mysql --port=3306 --host=localhost --user=myname --password=password mydb
Nota che il valore dei parametri varia in base alla tua configurazione, nel mio caso, utilizzando il software MAMP, la porta per il server MySQL è la 8889.
Se ti serve fare il setup da sviluppatore ti consiglio questo mio articolo: Setup per lo sviluppo software.
Per creare un utente ti basterà digitare il seguente codice MySQL
CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';
dove ovviamente sostituirai username e password con i loro reali valori
phpMyAdmin
nel caso di phpMyAdmin il login è automatico siccome probabilmente è stato configurato automaticamente da XAMPP o MAMP
Anche in questa web app puoi scrivere il comando SQL nella apposita sezione
oppure puoi utilizzare il menu Account utenti e fare click sulla voce Aggiungi account utente
di seguito basta inserire i dati del nuovo utente, ti consiglio di fare generare la password e poi salvartela
Assegnazione dei permessi
Dopo che hai creato un utente devi sapere che di default non dispone di nessun privilegio di accesso e di modifica del database. Dovrai assegnare i permessi e con quali database e tabelle può interagire.
La sintassi del comando MySQL è la seguente
GRANT permission ON database.tabella TO 'username' ON @'localhost'
Tipi di permessi MySQL
ALL PRIVILEGES | consente l’accesso completo al database |
CREATE | concede all’utente di creare nuovi database e tabelle |
DROP | consente all’utente di cancellare database e tabelle |
DELETE | concede all’utente di cancellare record dalle tabelle |
INSERT | consente all’utente di inserire record nelle tabelle |
SELECT | concede all’utente di interrogare i database per leggerne il contenuto |
UPDATE | consente all’utente di modificare i record presenti nelle tabelle |
GRANT OPTION | concede all’utente di aggiungere o rimuovere privilegi ad altri utenti |
Esempi di assegnazione permessi
Passiamo ora ad alcuni esempi:
Per concedere il permesso di interrogare tutte le tabelle del database Videoteca all’utente username
GRANT SELECT ON Videoteca.* TO 'username'@'localhost';
Se vogliamo concedere ad un utente di inserire e modificare i record della tabella films del del database Videoteca
GRANT INSERT,UPDATE ON Videoteca.films TO 'username'@'localhost';
Affinché l’utente abbia l’accesso completo all’interno del server MySQL
GRANT ALL PRIVILEGES ON *.* TO 'username'@'localhost';
Infine, terminate la o le operazioni di GRANT è necessario aggiornare i privilegi con il seguente comando
FLUSH PRIVILEGES;
Revocare i permessi
In maniera del tutto analoga possiamo revocare i permessi ad uno specifico utente con il comando REVOKE
la sua sintassi è
REVOKE permissions ON database.tabella FROM 'username'@'localhost''
Eliminare un utente
Per eliminare un utente e quindi non permettergli più di accedere al DBMS utilizza il comando DROP USER
nel seguente modo
DROP USER 'username'@'localhost'
Assegnazioni permessi da GUI di phpMyAdmin
Come abbiamo visto prima phpMyAdmin ci permette di gestire gli utenti tramite interfaccia grafica, nella stessa schermata dove inseriamo i dati, del nuovo utente, possiamo anche scegliere quali permessi condergli