Creare un utente in MySQL con CREATE USER

Per poter creare un nuovo utente in MySQL , oltre all’accesso al relativo database devi disporre anche di permessi di amministratore o privilegi di superutente sufficienti per creare account utente e gestire le autorizzazioni. Devi inoltre sapere di quale tipo di accesso necessita il nuovo utente: permessi di lettura, di scrittura o addirittura di amministrazione.

Creare un utente MySQL

Installando il sistema di gestione di database, MySQL crea un account root grazie al quale ottieni il pieno controllo dei tuoi database, delle tabelle e degli utenti per gestirli come amministratore. Se ti serve aiuto per l’installazione, trovi tutte le informazioni importanti nel nostro tutorial MySQL.

Con il tuo account root puoi creare altri account utente o nuovi utenti MySQL e assegnare loro le autorizzazioni. Tieni presente che, per impostazione predefinita, sui sistemi Ubuntu con MySQL 5.7 e versioni più recenti l’utente root MySQL è configurato in modo da non autenticarsi con una password, ma con il plugin auth_socket. Il nome dell’utente di sistema che chiama il client MySQL deve corrispondere al nome dell’utente MySQL indicato nel comando. Questo significa che devi anteporre il comando sudo per ottenere l’accesso al tuo account root:

$ sudo mysql
bash

Per creare un nuovo utente in MySQL utilizza il comando CREATE USER. Puoi così creare un utente con un determinato nome utente e relativa password:

mysql> CREATE USER 'username'@'host' IDENTIFIED WITH authentication_plugin BY 'password';
bash

Sostituisci username con un nome utente a tua scelta. Dopodiché sotto host indica il nome dell’host da cui si collegherà il nuovo utente. Se l’utente deve avere accesso soltanto dal tuo server Ubuntu locale, puoi indicare localhost.

Selezionando il plugin di autenticazione hai a disposizione diverse possibilità: il plugin auth_socket offre una sicurezza elevata, in quanto l’utente deve inserire una password per accedere al database. Tuttavia, impedisce anche i collegamenti da remoto, con il rischio quindi di comportare più lavoro quando con MySQL devono interagire programmi esterni. In alternativa, puoi tralasciare la parte di comando WITH authentication_plugin per fare in modo che l’utente si autentichi tramite il plugin standard di MySQL caching_sha2_password. In questo caso il comando è:

mysql> CREATE USER 'sammy'@'localhost' IDENTIFIED BY 'password';
bash

Una volta creato un nuovo utente, devi assegnargli le autorizzazioni.

Registra il tuo dominio
  • Certificato SSL Wildcard incluso
  • Registrazione di dominio sicura
  • Indirizzo e-mail professionale da 2 GB

Assegnare permessi utente con il comando MySQL create user

La creazione e l’amministrazione dei permessi utente è decisiva per la sicurezza dei dati in MySQL. Il comando generale per assegnare i permessi utente è il seguente:

mysql> GRANT PRIVILEGE ON database.table TO 'username'@'host';
bash

Il valore PRIVILEGE determina quali azioni può eseguire l’utente nel database e nella tabella indicati. Puoi sostituire questo valore, tra l’altro, con i comandi seguenti:

  • CREATE: consente agli utenti di creare un database o una tabella.
  • SELECT: permette agli utenti di richiamare dati.
  • INSERT: consente agli utenti di aggiungere nuove voci nelle tabelle.
  • UPDATE: permette agli utenti di modificare le voci esistenti nelle tabelle.
  • DELETE: consente agli utenti di eliminare voci di tabella.
  • DROP: gli utenti possono eliminare intere tabelle di database.

Puoi anche assegnare al nuovo utente più privilegi in una volta sola, separandoli con una virgola:

mysql> GRANT SELECT, INSERT, UPDATE ON database.table TO 'username'@'host';
bash

Puoi assegnare le autorizzazioni per tutti i database o le tabelle anche con un unico comando, inserendo * al posto dei nomi dei database e delle tabelle. Il comando seguente fornisce ad esempio a un utente l’autorizzazione di interrogare dati in tutti i database e in tutte le tabelle con SELECT, aggiungere nuove voci con INSERT e modificare quelle esistenti con UPDATE.

mysql> GRANT SELECT, INSERT, UPDATE ON *.* TO 'username'@'host';
bash

Dopo aver eseguito in MySQL l’applicazione CREATE USER o GRANT, con il comando FLUSH PRIVILEGES puoi aggiornare il database per caricare le tabelle delle autorizzazioni. Così facendo ti assicuri che le nuove autorizzazioni siano applicate:

mysql> FLUSH PRIVILEGES;
bash

Dovresti comunque concedere agli utenti soltanto le autorizzazioni di cui hanno effettivamente bisogno. Assegnare a un utente il pieno controllo comporta anche un rischio di sicurezza elevato.

Creare un utente MySQL: rimuovere permessi utente

Per rimuovere permessi utente in MySQL si usa il comando REVOKE. La sintassi è simile al comando GRANT. In questo caso però occorre utilizzare FROM al posto di TO:

mysql> REVOKE type_of_permission ON database_name.table_name FROM 'username'@'host';
bash

Per visualizzare le autorizzazioni correnti di un utente puoi usare il comando SHOW GRANTS:

mysql> SHOW GRANTS FOR 'username'@'host';
bash

Per eliminare un utente si usa il comando DROP:

mysql> DROP USER 'username'@'localhost';
bash

Presta comunque la massima attenzione quando elimini utenti, in particolare se si tratta di utenti con privilegi amministrativi. Assicurati di rimuovere l’utente corretto per evitare perdite di dati accidentali.

Dopo aver creato un nuovo utente MySQL e avergli concesso i diritti, puoi chiudere il client MySQL:

mysql> exit
bash
Hai trovato questo articolo utile?
Per offrirti una migliore esperienza di navigazione online questo sito web usa dei cookie, propri e di terze parti. Continuando a navigare sul sito acconsenti all’utilizzo dei cookie. Scopri di più sull’uso dei cookie e sulla possibilità di modificarne le impostazioni o negare il consenso.
Page top