Introduzione
MySQL è il più popolare sistema di gestione di database relazionali open source. Il server MySQL ci consente di creare numerosi account utente e concedere i privilegi appropriati in modo che gli utenti possano accedere e gestire i database.
Questo tutorial descrive come creare account utente MySQL e concedere privilegi.
Prima di iniziare
Partiamo dal presupposto che sul tuo sistema sia già installato un server MySQL o MariaDB.
Tutti i comandi vengono eseguiti all'interno della shell MySQL come utente root o amministrativo. I privilegi minimi richiesti per creare account utente e definirne i privilegi sono CREATE USER
e GRANT
.
Per accedere alla shell MySQL digitare il comando seguente e inserire la password dell'utente root di MySQL quando richiesto:
mysql -u root -p
Se non hai impostato una password per il tuo utente root MySQL, puoi omettere il flag -p
.
Creare un nuovo account utente MySQL
Un account utente in MySQL è costituito da un nome utente e parti dell'hostname.
Per creare un nuovo account utente MySQL, eseguire il comando seguente:
CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'user_password';
Sostituisci il valore di newuser
con il nuovo nome utente desiderato e il valore di user_password
con la password dell'utente.
Nel comando sopra la parte hostname è impostata su localhost
, il che significa che l'utente sarà in grado di connettersi al server MySQL solo dall'host locale (cioè dal sistema in cui è in esecuzione MySQL Server).
Per concedere l'accesso da un altro host, modificare la parte hostname (localhost
) con l'IP della macchina remota. Ad esempio, per concedere l'accesso da una macchina con IP 10.8.0.5
dovresti eseguire:
CREATE USER 'newuser'@'10.8.0.5' IDENTIFIED BY 'user_password';
Per creare un utente in grado di connettersi da qualsiasi host, utilizzare il carattere jolly '%'
come parte host:
CREATE USER 'newuser'@'%' IDENTIFIED BY 'user_password';
Concedere privilegi a un account utente MySQL
Esistono più tipi di privilegi che possono essere concessi a un account utente. Puoi trovare un elenco completo dei privilegi supportati da MySQL qui.
I privilegi più comunemente usati sono:
ALL PRIVILEGES
- Concede tutti i privilegi a un account utente.CREATE
- L'account utente è autorizzato a creare database e tabelle.DROP
- L'account utente è autorizzato a eliminare database e tabelle.DELETE
- L'account utente è autorizzato a eliminare righe da una tabella specifica.INSERT
- L'account utente può inserire righe in una tabella specifica.SELECT
- L'account utente è autorizzato a leggere un database.UPDATE
- L'account utente è autorizzato ad aggiornare le righe della tabella.
Per concedere privilegi specifici a un account utente, è possibile utilizzare la sintassi seguente:
GRANT permission1, permission2 ON database_name.table_name TO 'database_user'@'localhost';
Esempi
Concedere tutti i privilegi di un account utente su un database specifico:
GRANT ALL PRIVILEGES ON database_name.* TO 'database_user'@'localhost';
Concedere tutti i privilegi di un account utente su tutti i database:
GRANT ALL PRIVILEGES ON *.* TO 'database_user'@'localhost';
Concedere tutti i privilegi di un account utente su una tabella specifica da un database:
GRANT ALL PRIVILEGES ON database_name.table_name TO 'database_user'@'localhost';
Concedere più privilegi a un account utente su un database specifico:
GRANT SELECT, INSERT, DELETE ON database_name.* TO database_user@'localhost';
Visualizzare i privilegi dell'account utente MySQL
Per trovare i privilegi concessi a un account utente MySQL specifico, utilizzare la dichiarazione SHOW GRANTS
:
SHOW GRANTS FOR 'database_user'@'localhost';
+---------------------------------------------------------------------------+
| Grants for database_user@localhost |
+---------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'database_user'@'localhost' |
| GRANT ALL PRIVILEGES ON `database_name`.* TO 'database_user'@'localhost' |
+---------------------------------------------------------------------------+
2 rows in set (0.00 sec)
Revocare i privilegi da un account utente MySQL
La sintassi per revocare uno o più privilegi da un account utente è quasi identica a quando si concedono i privilegi.
Ad esempio, per revocare tutti i privilegi da un account utente su un database specifico, utilizzare il comando seguente:
REVOKE ALL PRIVILEGES ON database_name.* TO 'database_user'@'localhost';
Rimuovere un account utente MySQL esistente
Per eliminare un account utente MySQL, utilizzare l'istruzione DROP USER
:
DROP USER 'user'@'localhost'
Il comando sopra rimuoverà l'account utente e i suoi privilegi.
Conclusione
Questo tutorial copre solo le basi, ma dovrebbe essere un buon inizio per chiunque voglia imparare come creare nuovi account utente MySQL e concedere privilegi.