Gestire un database da terminale

MariaDB

 

Salve a tutti! Una cosa molto importante oggi sono i database. Essi li possiamo trovare ovunque, dalla piccola applicazione sul nostro smartphone, al complesso sistema informatico bancario. Negli ultimi anni sono diventati sempre più complessi, e la loro gestione più difficile. Ma per nostra fortuna anche i programmi per gestirli si sono evoluti, fino a renderla parecchio semplice ed intuitiva. Tra questi software possiamo trovare PhpMyAdmin, con la sua interfaccia grafica semplice e accessibile via browser. Ma non sempre si ha accesso ad una via comoda, per fortuna i database possono essere gestiti anche tramite terminale, accedendo al server ad esempio tramite ssh. Certo questa non è la via più comoda, ma a mio parere può sempre essere utile gestirlo grazie ad un terminale, infatti nel post di oggi andremo a vedere come usare uno di questi software, in particolare vedremo MariaDB.

Cos'è MariaDB

MariaDB è una fork del famoso Mysql, scritto in linguaggio C++, e lo si può trovare sia per processori a 32 che 64 bit in molti repository ufficiali, oltre che sul sito uffuciale. Il software è rilasciato con licenza GNU GPL.

Vediamo come installare mariadb sia su Arch Linux che su Ubuntu.

Installazione e configurazione Arch Linux
In entrambe le distribuzioni troviamo tutto nei repositori, quindi ottieniamo i permessi di root:

 

su


e poi installiamolo:

 

pacman -S mariadb libmariadbclient mariadb-clients


Una volta installato cambiamo i permessi alla seguente directory:

chown -R mysql:mysql /var/lib/mysql


Ora che abbiamo cambiato i permessi alla directory diamo il seguente comando per configurare in modo sicuro il programma, ci chiederà di inserire una password per l'utente root e altre opzioni che possiamo abilitare e disabilitare:

mysql_secure_installation


Ora che abbiamo terminato la configurazione possiamo avviare il demone "mysqld":

 

systemctl start mysqld


Se vogliamo, per qualsiasi ragione, stoppare il demone "mysqld", diamo il seguente comando:

 

systemctl stop mysqld


Installazione e configurazione Ubuntu
Su Ubuntu l'installazione e la configurazione sono ancora molto più semplici. Per installare il programma diamo il seguente comando:

 

sudo apt-get update


e poi:

 

sudo apt-get install mariadb-server mariadb-client


Durante l'installazione ci chiederà già la password per l'utente, quindi non dobbiamo lanciare nessuno script post installazione per la configurazione, ma nessuno ci vieta di farlo.

Vi ricordo che se avete la necessità di stoppare o avviare il servizio, date il seguente comando:

 

sudo /etc/init.d/mysql restart


Come usare il programma
Questo software è parecchio complesso, noi vedremo come si fanno le cose principali, ma se volete un riferimento molto più completo ed approfondito potete vedere la documentazione del sito ufficiale.

Vi ricordo che se volete far in modo che la base di dati sia accessibile solo in locale, e non sia visibile all'esterno, potete decommentare la seguente riga nel file "/etc/mysql/my.cnf":

 

skip-networking


Se avete eseguito questo cambiamento ricordatevi di riavviare il servizio.

Per entrare all'interno del programma, e poter gestire tutto diamo il seguente comando:

 

mysql -u root -p


Una volta all'interno possiamo creare, eliminare e modificare ciò che vogliamo. La maggior parte delle operazioni vengono eseguite come query SQL, quindi se avete dimestichezza con questo linguaggio, allora non avrete problemi.

Nuovo utente
Con "mysql", possiamo creare nuovi utenti, associarli ad uno specifico database o eventualmente a tutti, settare dei privilegi specifici, insomma come se fosse un vero e proprio utente del sistema operativo! Ma vediamo, come prima cosa, come creare un utente. Nella shell di "mysql" digitiamo il seguente comando:

 

create user 'pippo'@'localhost' identified by 'test';


In questo modo, con questa query, abbiamo inserito nella tabella "user" del database mysql, un nuovo utente di nome "pippo", con indirizzo "localhost", quindi è un utente con cui ci si può collegare in locale, ed infine abbiamo scritto "identified by 'test'" ossia abbiamo detto che la sua password è "test".

Ora dobbiamo dargli dei privilegi. Ci sono diversi privilegi che un utente di "mysql" può avere, ossia:

  • ALL PRIVILEGES
  • CREATE
  • DROP
  • DELETE
  • INSERT
  • SELECT
  • UPDATE
  • GRANT OPTION

Per impostare all'utente "pippo" il privilegio "ALL PRIVILEGES" scriviamo la seguente query:

 

grant all privileges on * . * to 'pippo'@'localhost';


In questo modo ora "pippo" ha tutti i privilegi possibili, su tutte le basi di dati.

Il dbms "mysql", come molti altri, non scrive direttamente i privilegi su disco, per motivi di efficienza, quindi dobbiamo forzare questa operazione digitando il seguente comando:

 

flush privileges;


Ora, in questo modo, siamo sicuri che i privilegi sono stati settati per l'utente "pippo".

Più in generale, possiamo aggiungere o togliere i permessi a qualsiasi utente, utilizzando queste due query:

 

 grant [type of permission] on [database name].[table name] to ‘[username]’@'localhost’;


e

 

 revoke [type of permission] on [database name].[table name] from ‘[username]’@‘localhost’;


La prima non è altro che una generalizzazione della query che abbiamo utilizzato per creare l'utente "pippo", mentre la seconda ci permette, come avrete intuito, di revocare un permesso ad uno specifico utente su una specifica base di dati.

Infine se vogliamo eliminare l'utente "pippo", o un altro qualsiasi, possiamo utilizzare questa query:

 

 drop user 'pippo'@'localhost';


Ricordate che se volete cambiare la password ad esempio all'utente "root" potete utilizzare questa query:

 

 update mysql.user set Password=PASSWORD('MyNewPass') where 
User='root';


Manipolare la base di dati
Ora vediamo alcune query utili per la manipolazione del database. Ora vedremo delle query in generale, ma non è nulla di diverso da quello che probabilmente già saprete sul linguaggio SQL.

Per creare una nuova base di dati, scriviamo la seguente query:

 

create database nome_db;


Per vedere la lista di tutti i database presenti in "mysql":

 

show databases;


Se invece vogliamo utilizzare una specifica base di dati, diamo la seguente query:

use nome_db;


Se vogliamo vedere le tabelle presente nella base di dati che stiamo utilizzando, allora scriviamo:

show tables;


Per vedere i dettagli di una specifica tabella:

describe nome_tabella;


Ovviamente per vedere il contenuto della tabella possiamo usare la solita "select..from..where".

Conclusioni
Oggi abbiamo visto come riuscire a manipolare una base di dati con il terminale. Il tutto secondo me può tornare utile in molte situazioni.

 

FONTI:
- Immagini Joel Garia;
- Gestione utenti;
- MariaDB;

Dottore in Informatica. Da sempre appassionato di Linux, reti informatiche, sicurezza e, in modo amatoriale, all'elettronica. Il mio intento è quello di trasmettere le mie conoscenze ad altri appassionati.

Lascia un commento