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
bashPer 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';
bashSostituisci 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';
bashUna volta creato un nuovo utente, devi assegnargli le autorizzazioni.
- 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';
bashIl 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';
bashPuoi 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';
bashDopo 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;
bashDovresti 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';
bashPer visualizzare le autorizzazioni correnti di un utente puoi usare il comando SHOW GRANTS
:
mysql> SHOW GRANTS FOR 'username'@'host';
bashPer eliminare un utente si usa il comando DROP
:
mysql> DROP USER 'username'@'localhost';
bashPresta 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