Vediamo come concedere permessi (detti privilegi) a un utente del database MySQL
Per impostazione predefinita, quando crei un nuovo utente MySQL utilizzando la sintassi
CREATE USER '<username>'@'localhost' IDENTIFIED BY '<password>';
l'utente non può fare molto. Possiamo dire che non può a nulla, in realtà.
Non può leggere i dati da nessun database esistente, per non parlare della modifica dei dati. E non può nemmeno creare un nuovo database.
Per fare in modo che un utente faccia qualsiasi cosa, devi concedere i privilegi ad esso.
Puoi farlo usando il GRANT
comando.
Possiamo usare GRANT <permission>
, utilizzando le seguenti parole chiave di autorizzazione:
CREATE
DROP
DELETE
INSERT
SELECT
UPDATE
ALL PRIVILEGES
Concedi il privilegio per creare nuovi database a un utente
GRANT CREATE ON *.* TO '<username>'@'localhost';
Concedi i privilegi a un utente per creare nuove tabelle in un database specifico
GRANT CREATE ON <database>.* TO '<username>'@'localhost';
Concedi il privilegio di leggere (interrogare) un database specifico a un utente
GRANT SELECT ON <database>.* TO '<username>'@'localhost';
Concedi il privilegio per leggere un database specifico table a un utente
GRANT SELECT ON <database>.<table> TO '<username>'@'localhost';
Concedi il privilegio di inserire, aggiornare ed eliminare righe in un database specifico per un utente
GRANT INSERT, UPDATE, DELETE ON <database>.* TO '<username>'@'localhost';
Concedi a un utente il privilegio di eliminare le tabelle in un database specifico
GRANT DROP ON <database>.* TO '<username>'@'localhost';
Concedi il privilegio di eliminare i database a un utente
GRANT DROP ON *.* TO '<username>'@'localhost';
Concedi tutti i privilegi su un database specifico a un utente
GRANT ALL PRIVILEGES ON <database>.* TO '<username>'@'localhost';
Concedi tutti i privilegi a un utente
GRANT ALL PRIVILEGES ON *.* TO '<username>'@'localhost';
Revocare un privilegio
Esempio per revocare il DROP
privilegio su <database>
:
REVOKE DROP ON <database>.* TO '<username>'@'localhost';
Per revocare tutti i privilegi, esegui:
REVOKE ALL PRIVILEGES ON *.* TO '<username>'@'localhost';
Puoi visualizzare i privilegi di un singolo utente eseguendo:
SHOW GRANTS FOR '<username>'@'localhost';