Mysql, creare utente/db e assegnare permessi da command line

Mysql, creare utente/db e assegnare permessi da command line

di Pubblicato: 12 ottobre 2015 Aggiornato: 8 dicembre 2015 0 commenti

Vediamo in questa breve guida come poter creare un database e assegnare specifici permessi ad un utente utilizzando esclusivamente la command line. Si presume che i pre-requisiti di partenza siano quelli di lavorare in un server Linux (nel caso specifico faccio riferimento ad una distribuzione Ubuntu) e di avere un server MySQL installato e configurato.

Nel caso di Ubuntu o Debian è questione di due righe:

sudo apt-get update
sudo apt-get install mysql-server

Durante l’installazione dei pacchetti vi verrà richiesta una password per il super-amministratore root. Quindi la sfruttiamo subito dato che  è necessario autenticarsi proprio come utente Root di MySQL:

mysql -u root -p

vi verrà chiesta ovviamente la password, e successivamente otterrete la sub-shell di MySQL. Facciamo il caso di voler creare l’utente “asdrubale

CREATE USER 'asdrubale'@'localhost' IDENTIFIED BY 'AsdrubaleTheBest';

E’ molto importante utilizzare le maiuscole nei comandi. Non è sempre mandatorio, dipende dal server, ma consiglio di utilizzarle così come le vedete scritte qui sopra. Alcune considerazioni; il primo “asdrubale” è di fatto il nome utente che utilizzeremo poi per loggarsi, mentre “AsdrubaleTheBest” è un identificativo. Nell’esempio ho volutamente messo due cose diverse, nella realtà si tende a far coincidere username e identificativo. Fate attenzione agli apici che vanno rispettati anch’essi. “localhost” si riferisce al server MySQL, in questo caso si tratta di un server ospitato nella medesima macchina dove ci siamo collegati via ssh. Nel caso si tratti di un server remoto occorre mettere l’IP o il nome DNS.

Non dimentichiamoci di assegnare una password:

set password for 'asdrubale'@'localhost' = PASSWORD('metti-qui-la-password');

Per verificare che sia andato tutto bene possiamo chiedere la lista degli utenti registrati:

SELECT User,Host FROM mysql.user;

+------------------+-------------------+
| User | Host |
+------------------+-------------------+
| root | 127.0.0.1                     |
| root | ::1                           |
| root | localhost                     |
| asdrubale | localhost                |
+------------------+-------------------+
4 rows in set (0.00 sec)

La lista formattata che vi verrà ritornata dovrà contenere il nostro “asdrubale“.

Ora passiamo direttamente a creare il database dove il nostro nuovo utente potrà scrivere. Il database si chiamerà “metauro

CREATE DATABASE metauro;

niente di più semplice, come nell’esempio precedente non dimenticatevi il punto e virgola di chiusura. Ora, giusto per sicurezza, vediamo se il nuovo db è stato creato:

SHOW DATABASES;

+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| metauro            |
+--------------------+
4 rows in set (0.00 sec)

L’elenco formattato dovrà riportare quello appena creato.

Possiamo passare a fornire i permessi necessari ad “asdrubale” affinché possa operare sul db “metauro“.

GRANT ALL ON metauro.* TO 'asdrubale'@'localhost';

Dopo GRANT è presente ALL, che di fatto è un comando. Nella maggioranza dei casi quando diamo accesso è proprio di questo tipo. Significa che l’utente in questione è di fatto l’amministratore per questo database.

Altri tipi di comando sono alternativi a ALL sono:

  • CREATE : permette di creare il database e le tavole.
  • UPDATE : permette di aggiornare i dati delle righe di una tavola.
  • INSERT : permette di inserire dati nelle righe delle tavole.
  • SELECT : permette di leggere i dati nelle righe delle tavole.
  • DELETE : permette di cancellare i dati dalle righe di una tavole.
  • DROP : permette di cancellare le tavole, le righe e il database intero.
  • EXECUTE : permette di eseguire comandi.
  • GRANT OPTION : permette di concedere i permessi di accesso ad un altro utente.
  • SHOW DATABASES : permette di vedere la lista dei database.

Possiamo concludere le operazioni, rinfrescando i permessi. Non è del tutto necessario,  ma è buona norma farlo:

FLUSH PRIVILEGES;

Per avere una controprova, possiamo verificare con questo comando la riuscita delle operazioni:

SHOW GRANTS FOR 'adrubale'@'localhost';

+-------------------------------------------------------------------------------------------------------------------+
| Grants for asdrubale@localhost                                                                                                                         |
+-------------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'asdrubale'@'localhost' IDENTIFIED BY PASSWORD '*..cut'                  |
| GRANT ALL PRIVILEGES ON 'metauro'.* TO 'asdrubale'@'localhost'                                                   |
+-------------------------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)

In definitiva abbiamo visto come sia semplice creare un database ed un utente con un solo accesso SSH senza strumenti esterni.

Ti è stato utile questo articolo?
Considera una piccola donazione: 1MVsPDJu9ctp8WfyiQHJCPjwFJKe7YWHek

Vuoi dire o aggiungere qualcosa?

sezione commenti aperta al pubblico

Non ci sono ancora commenti!

Puoi essere il primo a commentare.

Rispondi