Creare un nuovo account utente MySQL

Un account utente in MySQL fa riferimento ed e composto da due componenti , il nome utente l'hostname.
Per creare un nuovo account utente MySQL eseguiamo il comando seguente, basta sostituire nome_utente con il nome dell'utente che si desidera creare:

CREATE USER 'nome_utente'@'localhost' IDENTIFIED BY 'password_utente';

Nel comando sopra abbiamo impostato la parte hostname su localhost il che significa che questo utente sarà in grado di connettersi al server MySQL solo dall'host locale (cioè dal sistema in cui è in esecuzione MySQL Server).

Se desideri concedere l'accesso da un altro host (s) modifica localhost con l'IP della macchina remota o utilizzare il carattere '%' come carattere jolly, che sblocca l'account utente per l'accesso da qualsiasi host.
Come quando si lavora con i database per evitare un errore quando si tenta di creare un account utente già esistente, è possibile utilizzare:

CREATE USER IF NOT EXISTS 'nome_utente'@'localhost' IDENTIFIED BY 'password_utente';

Cambiare la password di un account

Se intendiamo cambiare la password di un account possiamo utilizzare la sintassi seguente in base alla versione MySQL installata vediamo come fare

Identifichiamo la versione installata suo vostro server con il seguente comando:

mysql --version

Se si dispone di MySQL 5.7.6 e versioni successive o MariaDB 10.1.20 e versioni successive, per modificare la password utilizzare il comando seguente:

ALTER USER 'nome_utente'@'localhost' IDENTIFIED BY 'new_password';

Se hai MySQL 5.7.5 e versioni precedenti o MariaDB 10.1.20 e versioni precedenti, utilizza:

SET PASSWORD FOR 'nome_utente'@'localhost' = PASSWORD('new_password');

In entrambi i casi, l'output dovrebbe essere simile al seguente:
Query OK, 0 rows affected (0.00 sec)

Elencare tutti gli account utente MySQL

Una volta creato l'account possiamo verificare quelli presenti interrogando la tabella mysql.users:

SELECT user, host FROM mysql.user;

L'output dovrebbe essere simile al seguente:
+------------------+-----------+
| user | host |
+------------------+-----------+
| nome_utente | % |
| database_user | localhost |
| root | localhost |
+------------------+-----------+
3 rows in set (0.00 sec)


Eliminare l'account utente MySQL


Per eliminare un account utente, utilizzare il comando seguente:

DROP USER 'nome_utente@'localhost';

Se l'account utente che non esiste, verra visualizzato un errore.
ERROR 1396 (HY000): Operation DROP USER failed for 'database_user'@'localhost'

Come quando si lavora con i database per evitare l'errore, è possibile utilizzare:

DROP USER IF EXISTS 'nome_utente'@'localhost';

Query OK, 0 rows affected, 1 warning (0.00 sec)

Concedere le autorizzazioni a un account utente MySQL

Esistono più tipi di privilegi che possono essere concessi a un account utente e di seguito esamineremo diversi esempi:

Per assegnare tutti i privilegi a un account utente su tutti i database, utilizzare il comando seguente:
GRANT ALL PRIVILEGES ON *.* TO 'nome_utente'@'localhost';

Per assegnare tutti i privilegi a un account utente su una tabella specifica di un database, utilizzare il comando seguente:
GRANT ALL PRIVILEGES ON database_name.table_name TO 'nome_utente'@'localhost';

Se si desidera concedere solo privilegi specifici a un account utente su un tipo di database specifico:
GRANT SELECT, INSERT, DELETE ON database_name.* TO nome_utente@'localhost';

Per assegnare tutti i privilegi a un account utente su un database specifico, utilizzare il comando seguente:
GRANT ALL PRIVILEGES ON database_name.* TO 'nome_utente'@'localhost';

Visualizza i privilegi dell'account utente MySQL

Per trovare i privilegi concessi a uno specifico tipo di account utente MySQL:
SHOW GRANTS FOR 'nome_utente'@'localhost';

+---------------------------------------------------------------------------+
| Grants for database_user@localhost |
+---------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'nome_utente'@'localhost' |
| GRANT ALL PRIVILEGES ON `database_name`.* TO 'database_user'@'localhost' |
+---------------------------------------------------------------------------+
2 rows in set (0.00 sec)

Revocare le autorizzazioni da un account utente MySQL

Se è necessario revocare uno o più privilegi o tutti i privilegi da un account utente, la sintassi è quasi identica a concederlo.

Ad esempio, se si desidera revocare tutti i privilegi da un account utente su un database specifico, utilizzare il comando seguente:
REVOKE ALL PRIVILEGES ON nome_utente.* TO 'nome_utente'@'localhost';

Questo è quanto, ora abbiamo una infarinatura per poter gestire un minimo gli account MySQL