MySQL create user – Creazione utenti e permessi

In uno dei precedenti articoli abbiamo parlato di come istallare phpMyAdmin. Oggi continuiamo a parlare di database, che sia mysql o MariaDB, e andiamo a vedere come creare un utente su un db mysql tramite il comando mysql create user.

Perché parlo di utenti? Perché una volta creato il database, sarà necessario creare un utente che abbia le grant, ovvero i permessi necessari, per accedere al database, oltre che, eventualmente, a quelli per gestirlo.

Indice dei contenuti

Let’s go!

Visualizzare gli utenti presenti sul database

Una volta terminata l’istallazione e la configurazione del nostro server mysql, o mariadb, e una volta fatto partire il servizio, non ci resta che fare il nostro primo login. Di default, mysql non crea utenti fuorchè un paio.

Se infatti ci colleghiamo al nostro database, utilizzando l’account di sistema operativo root e lanciando il comando:

mysql -uroot
ShellScript

L’output del comando sarà qualcosa di simile a:

mysql u root
mysql u root

riusciremo a collari al nostro DB. Ma questa modalità di accesso è valida soltanto, come detto, se siamo root sul nostro sistema operativo. In tal caso, ci troveremo collegati al nostro server e sarà sufficiente lanciare la seguente query per vedere quali sono gli utenti configurati sul nostro db:

select User,Host from mysql.user;
SQL

l’output sarà qualcosa di simile a:

MariaDB [(none)]> select User,Host from mysql. user;
+-------------+-----------+
| User | Host |
+-------------+-----------+
| mariadb.sys | localhost |
| mysql | localhost |
| root | localhost |
+-------------+-----------+
3 rows in set (0.001 sec)
SQL

ERROR 1045 (28000): Access denied for user

Error 1045 (28000) access denied for user 'root'@'localhost'
Error 1045 (28000) access denied for user ‘root’@’localhost’

Cosa rappresenta l’errore Error 1045 (28000) access denied for user ‘root’@’localhost’? E cosa rappresenta?

L’errore che si commette più spesso è quello di provare a collegarsi al database appena installato, attraverso l’inserimento della password, tramite il comando:

mysql -uroot -platuapassword
ShellScript

Questo dipende da come è stato configurato il tuo database mysql. Se le cose non sono state fatte a mestiere (parleremo di come installare mysql e/o maridb in uno dei prossimi articoli), non riuscirai ad accedere al tuo db mysql tramite utente mysql root, a meno che tu non sia root sul sistema operativo.

Questo errore di solito si presenta quando stai un utilizzando un utente di sistema operativo che NON è root. Il modo ideale per risolvere questo problema, anche per questioni di sicurezza, è quello di creare un utente di amministrazione ad hoc, insieme a un utente applicativo, che abbia, per esempio i permessi su un solo database.

Per risolvere il problema andiamo quindi a creare i nostri utenti sul database, attraverso il comando mysql create user identified by.

Ma per poter entrare e creare il primo utente, dobbiamo comunque essere root (di sistema operativo) e lanciare il comando:

mysql -uroot
ShellScript

Se tutto è andato liscio, verremmo riconosciuti tramite le credenziali di sistema operativo, anziché con la password di mysql. Ora possiamo procedere alla creazione dei nostri utenti.

Creiamo utenti mysql con il comando Mysql Create user identified by

Vediamo ora come si crea un utente e come assegnargli una password. Quando si crea un utente va valutato se questo deve essere un utente locale o può avere accesso da remoto. Vediamo i dettagli.

Il comando per creare un utente è

CREATE USER ‘username’@’%’ IDENTIFIED BY ‘password’;

Ora che abbiamo avuto accesso al nostro database con l’utente root, possiamo entrare nel dettaglio e vedere alcuni esempi pratici, prendendo in considerazione, per esempio la volontà di creare un utente che si chiami username e possa collegarsi con la password: ‘password‘.

C’è però una variabile nel comando CREATE USER ‘username’@’%’ IDENTIFIED BY ‘password’; elencato poco fa, che va spiegata prima di creare gli utenti. Parlo di ‘%‘. Il ‘%’ rappresenta il “luogo”, o meglio la sorgente, dalla quale l’utente si può collegare. Questo rappresenta quindi un livello di sicurezza aggiuntino, oltre alla password. Proviamo a spiegare meglio il concetto con un paio di esempi:

  • CREATE USER ‘username’@’%’ IDENTIFIED BY ‘password’;
    L’utente potrà collegarsi da qualunque indirizzo, ip, sia privato, che pubblico (qualora il database sia esposto su internet).
  • CREATE USER ‘username’@’locahost’ IDENTIFIED BY ‘password’;
    L’utente appena creato si potrà collegare solo ed esclusivamente da un client mysql che si connette localmente, ovvero dalla stessa macchina su cui è istallato il server, e tramite una socket unix
  • CREATE USER ‘username’@’127.0.0.1’ IDENTIFIED BY ‘password’;
    L’utente appena creato si potrà collegare solo ed esclusivamente da un client mysql che si connette localmente, ovvero dalla stessa macchina su cui è istallato il server, richiamando il server direttamente tramite indirizzo ip.

Differenza tra mysql create user @127.0.0.1 e @localhost?

“localhost” indica la connessione socket locale mentre 127.0.0.1 è TCP/IP. E sì, i socket sono più veloci del TCP/IP. In ogni caso, potrebbe essere utile creare entrambi gli utenti. Ho detto “entrambi gli utenti” perchè, di fatto i tre comandi precedenti , creano 3 utenti diversi che potrebbero anche avere password diverse.

Se infatti ora ripetessimo il comando:

select User,Host from mysql.user;
SQL

l’output sarà:

MariaDB [(none)]> select User,Host from mysql. user;
+-------------+-----------+
| User | Host |
+-------------+-----------+
| mariadb.sys | localhost |
| mysql | localhost |
| root | localhost |
| username | % |
| username | localhost |
| username | 127.0.0.1 |
+-------------+-----------+
6 rows in set (0.001 sec)
SQL

Contributo video

Vi riporto un utile video in cui è riportato un metodo alternativo per creare gli utenti su mysql

How to Create a New User in MySQL

Conclusioni MySQL create user – Creazione utenti e permessi

I passi da seguire, una volta capita la logica sono veramente semplici. Nel prossimo articolo vedremo come assegnare le Grant, ovvero i permessi, agli utenti appena creati.

Se avete dei dubbi o se volete condividere il vostro punto di vista, scrivete nei commenti e cercherò di rispondere al più presto.

Buona lettura.

Se volete restare aggiornati, vi lascio anche il link della mia newsletter di LinkedIn.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *