Quando si installa il servizio database MySQL, viene creato automaticamente un account root. Potete usarlo per eseguire qualsiasi azione e accedere a qualsiasi dato. Ma questo può essere un incubo per la sicurezza!

Per mantenere il vostro sito al sicuro, è bene impostare account aggiuntivi che non abbiano privilegi così elevati. Per fortuna, ci sono diversi modi per creare nuovi utenti in MySQL.

In questo articolo, analizzeremo tutte le ragioni per cui aggiungere altri utenti al database MySQL. Vi mostreremo anche come creare questi account e gestire i rispettivi permessi per mantenere la massima sicurezza. Iniziamo!

Introduzione a MySQL (e Perché Aggiungere Nuovi Utenti)

La distribuzione ufficiale di WordPress supporta entrambi i motori di database MySQL e MariaDB. Dopo aver valutato i pro e i contro, potreste aver optato per l’ultima versione del software di gestione dei database MySQL. Ad un certo punto, potreste voler creare altri utenti.

In MySQL, ogni account consiste in un nome utente e una password. Viene specificato anche l’host o gli host client dove l’utente può connettersi al server MySQL.

Di solito, si creano account aggiuntivi quando più persone richiedono accesso al database. Anche se più persone potrebbero interagire con MySQL dallo stesso account, la condivisione delle credenziali di accesso è un rischio per la sicurezza. Se rilevate degli errori o delle attività sospette all’interno del vostro database, un account condiviso renderà più difficile l’individuazione del colpevole.

MySQL è un sistema basato sui permessi. Vi permette di controllare esattamente a quali informazioni ogni utente ha accesso e quali azioni può eseguire. Creare più account con diversi permessi è molto più sicuro che affidarsi ad un unico account con accesso globale.

Quando installate MySQL, viene creato automaticamente un singolo account superuser ‘root’@’localhost’. Anche se siete gli unici gestori del database, è comunque prudente creare almeno un account aggiuntivo. In questo modo sarete sicuri di non perderai l’accesso all’intero database solo perché incontrate un problema con ‘root’@’localhost’

Questo account root ha il permesso di accedere a tutti i vostri dati ed eseguire qualsiasi azione. Anche gli utenti esperti di database possono causare seri danni con questo livello di controllo. Per questo, potreste creare un account utente regolare da utilizzare per l’amministrazione quotidiana di MySQL. Potrete poi riservare ‘root’@’localhost’ per task che richiedono privilegi elevati.

Come Gestire il Database MySQL

Nella gestione del database MySQL, avete due scelte. Potete usare MySQL Shell, che è un’interfaccia Python, Javascript o SQL e un componente del MySQL Server. Questo strumento è disponibile per piattaforme a 64 bit su Microsoft Windows, Linux e macOS.

In alternativa, potete utilizzare lo strumento gratuito phpMyAdmin. Diamo un’occhiata più da vicino ad entrambe le opzioni.

1. Gestire il Database da MySQL Shell

Per entrare nel prompt di MySQL Shell, aprite un terminale o un prompt dei comandi. Eseguite poi il seguente comando:

> mysqlsh

Questo apre MySQL Shell senza connettersi ad un server. Per impostazione predefinita, MySQL Shell si avvia in modalità JavaScript, ma potete cambiare modalità utilizzando il comando sql, py o js:

Aprire la MySQL Shell
Aprire la MySQL Shell

In MySQL Shell, le connessioni alle istanze di MySQL Server sono gestite da un oggetto session. Se X Protocol è disponibile, allora potete usare un oggetto Session. Si noti che X Protocol richiede l’X Plugin.

L’X Plugin ascolta la porta specificata da mysqlx_port, che di default è 33060. Potete creare un oggetto Session utilizzando questo comando:

–mysqlx (–mx)

Per esempio, potete stabilire una connessione con il protocollo X ad un’istanza locale di MySQL Server in ascolto sulla porta 33060, utilizzando quanto segue:

shell> mysqlsh –mysqlx -u utente -h localhost -P 33060

Se X Protocol non è disponibile, allora potete utilizzare un oggetto ClassicSession. Questo oggetto è destinato all’esecuzione di SQL sui server che utilizzano il classico protocollo MySQL. Per creare un oggetto ClassicSession, digitate

–mysql (–mc)

Potete verificare i risultati del vostro tentativo di connessione con il comando status di MySQL Shell o il metodo shell.status(). Per esempio:

mysql-js []> shell.status()

Per assegnare i privilegi tramite MySQL Shell, avrete bisogno di eseguire i comandi come utente root. Per far questo, inserite quanto segue e poi fornite la password di utente root di MySQL quando viene richiesto:

mysql -u root -p

Qui, -u indica che il parametro che segue è un nome utente, che in questo caso è root. Invece di mostrare la password in chiaro, usiamo -p. Questo stabilisce che la password non venga fornita e che dovrete inserirla quando richiesto. L’utilizzo di questi parametri può aiutarvi a mantenere sicuro il vostro account root.

2. Gestire il Database da phpMyAdmin

Se preferite utilizzare un’interfaccia grafica utente (GUI), potete gestire il database MySQL tramite phpMyAdmin. Con le dovute autorizzazioni, questa interfaccia può consentire di creare nuovi account, visualizzare e modificare le autorizzazioni ed eliminare gli account non più necessari. Per eseguire queste operazioni, è necessario aver effettuato l’accesso come root.

È possibile scaricare gratuitamente questo strumento dal sito di phpMyAdmin.

Esempio di dashboard di phpMyAdmin.
Esempio di dashboard di phpMyAdmin.

Come Creare e Gestire un Utente MySQL (4 Procedure)

Una volta che siete connessi al vostro database, potete eseguire molte azioni. Qui ci sono quattro diverse procedure per gestire i vostri account utente MySQL.

1. Creare un Nuovo Utente nel Server del Database

In phpMyAdmin, potete creare un account utilizzando il link Aggiungi nuovo utente. Potete poi utilizzare i campi di testo e i menu a tendina per configurare questo account:

A questo punto, potrete assegnare privilegi globali. Questo garantisce all’utente un accesso illimitato a tutti i vostri database e tabelle. Può essere un rischio per la sicurezza, quindi dovreste dare privilegi così elevati solo quando sono necessari. Potete assegnare privilegi specifici per i database dopo aver creato questo account.

Per creare un nuovo account tramite la shell MySQL, inserite il comando CREATE USER. Dovrete anche fornire un nome utente e l’hostname. Quest’ultimo è il nome dell’host da cui l’utente si connette al server MySQL:

CREATE USER ‘exampleuser’@’localhost’ IDENTIFIED BY ‘password’;

Quando scrivete questo comando, sostituite exampleuser e password con i valori che volete assegnare a questo account. L’utente può sempre cambiare la sua password MySQL in un secondo momento.

Nell’esempio precedente, abbiamo impostato l’hostname su “localhost”. Pertanto, l’utente potrà connettersi al server MySQL solo dal sistema dove è in esecuzione MySQL Server.

Potresti voler sostituire la parola localhost con l’indirizzo del vostro server. Per esempio, se questo utente ha bisogno di accedere a MySQL da una macchina con l’indirizzo Internet Protocol (IP) 11.0.0.0, allora dovete eseguire questo comando:

CREATE USER ‘newuser’@’11.0.0.0’ IDENTIFIED BY ‘user_password’;

Se volete creare un utente che può connettersi da qualsiasi host, potete includere il carattere jolly % nel vostro comando. Per esempio:

CREATE USER ‘newuser’@’%’ IDENTIFIED BY ‘user_password’;

In alternativa, potete omettere del tutto il valore dell’hostname. Questo avrà lo stesso risultato.

2. Assegnare i Permessi MySQL Tramite phpMyAdmin

Di default, un nuovo utente MySQL non ha il permesso di eseguire alcuna azione. Anche se accede al suo account, non sarà in grado di creare alcuna tabella o selezionare alcun dato.

Dopo aver creato un nuovo utente, di solito dovrete assegnargli alcuni permessi. Per mantenere il vostro database sicuro, è una buona idea dare ad ogni utente i privilegi minimi richiesti per eseguire il suo lavoro. È anche prudente rivedere regolarmente i permessi e quindi revocare quelli non necessari.

È possibile modificare i privilegi di un utente dalla dashboard Utenti di phpMyAdmin.

Concedere un accesso illimitato può sembrare l’opzione più facile, ma può mettere a rischio il vostro database. A meno che non abbiate una ragione specifica, in genere dovreste evitare di dare a qualcuno libero accesso a tutto il vostro database.

3. Modificare i Permessi degli Utenti da MySQL Shell

Se state utilizzando MySQL Shell, potete visualizzare tutti i privilegi concessi ad un account specifico con il comando SHOW GRANTS. Avrete bisogno di sostituire “username” e “localhost” con le informazioni dell’account che volete esaminare:

SHOW GRANTS FOR ‘username’@’localhost’;

Quando create un account, questo elenco sarà vuoto. Potete iniziare ad assegnare l’accesso a diverse parti del vostro database utilizzando il comando GRANT:

GRANT type_of_permission ON database_name.table_name TO ‘username’@’localhost’;

Con questo comando, abbiamo specificato i privilegi che stiamo assegnando, seguiti dal database e dalle tabelle a cui queste modifiche dovrebbero essere applicate. Infine, stiamo fornendo il nome utente e il server che riceveranno i privilegi nominati. Troverete un elenco completo di tutti i privilegi disponibili nella documentazione ufficiale di MySQL.

Documentazione MySQL
Documentazione MySQL

Se volete concedere l’accesso a qualsiasi database o tabella, potete usare un asterisco (*) al posto del nome del database o della tabella. Per esempio:

CONCEDI TUTTI I PRIVILEGI SU *. * TO ‘exampleuser’@’localhost’;

Qui stiamo concedendo a exampleuser il permesso di leggere, modificare ed eseguire tutte le operazioni su tutti i database e le tabelle. In generale dovreste riservare questi privilegi elevati solo agli amministratori.

A volte, potreste aver bisogno di togliere un permesso. Ad esempio, nel caso in cui avete concesso un privilegio per errore oppure l’utente non ne ha più bisogno. Per revocare l’accesso, eseguite questo comando:

REVOKE type_of_permission ON database_name.table_name FROM ‘username’@’localhost’;

Se assegnate i privilegi utilizzando il comando GRANT, MySQL dovrebbe rilevare queste modifiche e applicarle automaticamente. Tuttavia, è sempre prudente aggiornare i privilegi di un utente eseguendo il comando FLUSH PRIVILEGES;.

4. Rimuovere un Utente da MySQL

A volte, potreste aver bisogno di rimuovere un utente dal database MySQL. Per esempio, forse qualcuno sta lasciando la vostra organizzazione o si sta trasferendo in un altro dipartimento. Potreste anche cercare attivamente di limitare il numero di persone che possono accedere al vostro database, per aumentare la sicurezza.

Se state lavorando con MySQL Shell, potete eliminare un account usando l’istruzione DROP USER. Questo comando cancellerà anche tutti i rispettivi privilegi:

DROP USER ‘username’@’localhost’;

In alternativa, con phpMyAdmin, cercate l’account che volete rimuovere nella pagina Utenti. Potete quindi selezionare la casella di controllo corrispondente e scegliere se volete rimuovere anche i database con lo stesso nome.

Quando siete soddisfatti, cliccate su Esegui. Questa persona sarà ora eliminata da MySQL.

Riepilogo

MySQL crea automaticamente un account superuser ‘root’@’localhost’, ma non è mai una buona idea usarlo per tutto. Creando più utenti MySQL, potete assegnare diversi privilegi ad ognuno e mantenere i vostri dati al sicuro.

Potete anche assicurarvi di non perdere l’accesso al vostro database perché avete problemi con ‘root’@’localhost’.

Come proprietari di un sito web, il vostro database è spesso il vostro bene più prezioso. Il team di Kinsta è composto da esperti di WordPress e può aiutarvi a mantenere il vostro database in ottima forma.

Tutti i nostri piani di hosting includono un supporto 24 ore su 24! Scegliendo Kinsta, avrete sempre a disposizione dei veterani di WordPress pronti ad aiutarvi a risolvere qualsiasi problema del vostro database MySQL.