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 [email protected]'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 [email protected]                                       |
+---------------------------------------------------------------------------+
| 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.