Ricerca nel sito web

Come creare un nuovo utente e concedere autorizzazioni in MySQL


MySQL è un sistema di gestione di database popolare e ampiamente utilizzato che archivia e organizza i dati e consente agli utenti di recuperarli. Viene fornito con una vasta gamma di opzioni che concedono agli utenti determinate autorizzazioni su tabelle e database.

In questa guida imparerai come creare un nuovo utente e concedere le autorizzazioni nel database MySQL.

Come creare un nuovo utente in MySQL

Per creare un nuovo utente accedi prima alla shell MySQL.

sudo mysql -u root -p

Fornisci la password sudo seguita dalla password fornita durante la configurazione del database MySQL e premi INVIO. Successivamente, riceverai questo messaggio.

Per creare un nuovo utente, utilizzare la sintassi mostrata di seguito:

MariaDB [none]> CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';

Ad esempio, per creare un nuovo utente chiamato "tecmint" all'interno del database, richiama il comando:

MariaDB [none]> CREATE USER 'tecmint'@'localhost' IDENTIFIED BY 'QkYKmw$5tec';

Alcuni punti da tenere a mente

Quando aggiungi un utente localmente, ovvero sul sistema su cui hai installato MySQL, l'host dell'utente viene specificato come localhost e non l'indirizzo IP. La parola chiave "localhost" si traduce in "questo computer" e MySQL la tratta in modo univoco. Fondamentalmente, localhost viene utilizzato dal client mysql per stabilire una connessione al server del database MySQL installato localmente.

Finora, l'utente tecmint non dispone di alcun permesso per interagire con i database. Di fatto, l'utente non può nemmeno accedere alla shell MySQL.

Per garantire all'utente l'accesso completo a tutti i database, comprese le tabelle, eseguire.

MariaDB [none]> GRANT ALL PRIVILEGES ON * . * TO 'tecmint'@'localhost';

Nel comando precedente, gli asterischi indicano rispettivamente il database e la tabella a cui l'utente può accedere. Concede all'utente tutti i diritti sul database: lettura, scrittura, modifica ed esecuzione inclusa l'esecuzione di tutte le le attività anche su altri database e tabelle.

Finora abbiamo concesso all'utente l'accesso completo al database. Sebbene sia utile per spiegare i concetti di MySQL, generalmente non è consigliato in quanto potrebbe rappresentare un rischio per la sicurezza dei database. Basti pensare a cosa potrebbe accadere se un hacker entrasse in possesso della password dell’utente. Procederemo ulteriormente e discuteremo come assegnare autorizzazioni specifiche nella sezione successiva.

Una volta terminata l'assegnazione delle autorizzazioni all'utente, ricaricare tutti i privilegi come mostrato affinché le modifiche abbiano effetto.

MariaDB [none]> FLUSH PRIVILEGES

Come concedere autorizzazioni utente diverse

Ecco un elenco delle possibili autorizzazioni che puoi concedere agli utenti:

  • TUTTI I PRIVILEGI – Come visto in precedenza, ciò garantisce a un utente MySQL l'accesso completo a un database specifico.
  • CREA: consente agli utenti di creare nuovi database o tabelle.
  • DROP: consente agli utenti di eliminare database o utenti.
  • INSERISCI: consente agli utenti di inserire righe nelle tabelle.
  • DELETE: consente agli utenti di eliminare righe dalle tabelle.
  • SELECT: con l'autorizzazione "SELECT", gli utenti possono leggere il contenuto di una tabella.
  • AGGIORNA: consente agli utenti di aggiornare le righe in una tabella.
  • OPZIONE CONCESSIONE: gli utenti possono concedere o rimuovere i privilegi di altri utenti.

Per concedere un'autorizzazione utente specifica, utilizzare la sintassi:

MariaDB [none]> GRANT permission_type ON database_name.table_name TO 'username'@'localhost';

Inoltre, puoi assegnare autorizzazioni a tutte le tabelle in un database con un singolo simbolo di asterisco come mostrato:

MariaDB [none]> GRANT permission_type ON database_name.* TO 'username'@'localhost';

Ad esempio, per assegnare i permessi SELECT all'utente "tecmint" su tutte le tabelle del database testdb, esegui il comando.

MariaDB [none]> GRANT SELECT ON testdb.* TO 'tecmint'@'localhost';

Quindi eliminare i privilegi affinché le modifiche abbiano effetto.

MariaDB [none]> FLUSH PRIVILEGES;

Inoltre, puoi assegnare più autorizzazioni contemporaneamente separandole con una virgola come mostrato.

MariaDB [none]> GRANT INSERT, UPDATE ON testdb.* TO 'tecmint'@'localhost';

Come revocare le autorizzazioni MySQL

Per revocare le autorizzazioni a un utente, utilizzare la sintassi:

MariaDB [none]> REVOKE permission_type ON database_name.table_name FROM 'username'@'localhost';

Ad esempio, per revocare le autorizzazioni INSERT all'utente "tecmint", esegui il comando.

MariaDB [none]> REVOKE INSERT ON testdb.* FROM tecmint'@'localhost';
MariaDB [none]> FLUSH PRIVILEGES

Per dare un'occhiata alle autorizzazioni attuali di un utente, esegui:

MariaDB [none]> SHOW GRANTS FOR 'username'@'localhost';

Dall'output seguente, possiamo vedere che l'autorizzazione INSERT è stata cancellata dall'utente 'tecmint' lasciando solo SELECT e UPDATE diritti sul database testdb.

Per testare l'accesso alla shell MySQL utilizzando il nuovo utente, effettuare prima il logout.

MariaDB [none]> quit;

Quindi accedi nuovamente.

sudo mysql -u tecmint -p

Fornisci la password dell'utente e premi INVIO per accedere alla shell.

Per eliminare un utente, utilizza il comando DROP, proprio come faresti per eliminare un database.

MariaDB [none]> DROP USER 'username'@'localhost';

Potrebbe interessarti anche leggere i seguenti articoli relativi a MySQL:

  • Suggerimenti utili per risolvere errori comuni in MySQL
  • Mytop – Uno strumento utile per monitorare le prestazioni di MySQL/MariaDB in Linux
  • Come modificare la porta MySQL/MariaDB predefinita in Linux
  • Come reimpostare la password root di MySQL o MariaDB in Linux
Conclusione

Si spera che a questo punto tu possa creare utenti nei tuoi server di database MySQL e assegnare o revocare comodamente le autorizzazioni.