Guida alla configurazione di un database server con MySQL
Che cos'è MYSQL
MySQL è una database relazionale free.
E' uno dei 2 databases supportati da Ubuntu , l'altro è PostgreSQL (anch'esson free).
Installazione
· installiamo il pacchetto mysql-server
#apt-get -y install mysql-server
come illustrato durante la configurazione l'utenza per il management del servizio è Debian-sys-maint.
· modifichiamo il file /etc/mysql/my.cnf impostando i parametri di connessione ai DB :
[client]
port = 3306
socket = /var/run/mysqld/mysql.sock
...
[mysqld]
...
bind_address = 192.168.1.2
come vedete la riga importante è bind_address perchè stabilisce qual è l'indirizzo su cui il server MySQL ascolterà per richieste di connessioni provenienti da clients.
· ora settiamo la password di root per l'accesso al database sul server
#mysqladmin password <nuovapassword>
· ora testiamo l'accesso al database sul server
#mysql -h 192.168.1.2 -D user -u root -p
i parametri che seguono il comando client per la connesione al servizio MySQL hanno i seguenti significati :
· -h 192.168.1.2 : è l'indirizzo IP del server MySQL
· -D user : l'opzione -D permette di specificare il nome del database cui ci si vuol connettere
· -u root -p : specifica l'utenza con la quale ci connettiamo (opzione -u root) ed il fatto che dovremo fornire una password per l'accesso al DB user (opzione -p)
se tutto va a buon fine otteniamo un output simile al seguente :
mysql>
che ci apre le porte alla shell di mysql per l'immissione dei comandi mysql
Esploriamo la struttura di base di MySQL
Ora vediamo ciò che c'è dopo l'installazione di default di MySQL utilizzando il comando
mysql>show databases;
l'output ci fornisce tutti i databases presenti sul sistema dopo l'installazione di default.
per connettersi al database mysql utilizzare il comando
mysql>connect to mysql;
e per vedere quali tabelle sono presenti nel DB utilizzare il comando
mysql>show tables;
Ora creiamo il nostro primo database.
Architettura del DB
Il database che costruiremo nell'esempio soddisfa le seguenti specifiche
nome del database : utenti
tabella : utenti
campi : nome varchar(20)not null ,cognome varchar(20) not null,homedir varchar(30) not null,uid integer not null,gid integer not null
record da inserire : marco,rossi,/home/marco,0,0 ; luca,bruni,/home/luca,1,1
Creazione di un database con MySQL
Per creare il database usiamo il comando
#mysqladmin create utenti;
connettiamoci ad esso con il comando
#mysql -h 192.168.1.2 -D utenti -u root -p
Ora creiamo la tabella utenti con il comando
mysql>create table utenti (nome varchar(20) not null,cognome varchar(20) not null,homedir varchar(30) not null,uid integer not null,gid integer not null);
questo comando ha creato la tabella utenti nel nostro DB con i campi corrispondenti a quelli progettati.
E popoliamo la tabella appena creata
mysql>insert into utenti values ('marco','rossi','/home/marco',0,0);
mysql>insert into utenti values ('luca','bruni','/home/luca',1,1);
questo comando ha inserito nella tabella utenti i record che avevamo dichiarato in fase di progettazione.
Ora effettuiamo una query sulla nostra tabella per individuare tutti i dati dell'utente marco rossi
mysql>select * from utenti where nome='marco' and cognome='rossi';
Supponiamo di voler inserire un nuovo utente
mysql>insert into utenti values ('mario','bianchi','/home/mario',2,2);
e di voler cancellare dal nostro DB tutti i dati relativi all'utente luca bruni
mysql>delete from utenti where nome='luca' and cognome='bruni';
Aggiungiamo ora il nuovo campo Segni_Particolari per distinguere gli utenti del nostro DB
mysql>alter table utenti add Segni_Particolari varchar(50);
E aggiorniamo ora il record dell'utente marco rossi modificando la sua homedir al valore /exported/marcorossi
mysql>update utenti set homedir='/exported/marcorossi' where nome='marco' and cognome='rossi';
Bene questi sono i principali comandi dell'SQL standard che vi permetteranno di gestire il vostro database.
Ricordate che questa è soltanto un'introduzione generale , dovrete comunque consultare un testo approfondito di SQL per capire come progettare un database o per avere informazioni più dettagliate sugli altri comandi SQL e su quelli che vi consentiranno la gestione di un DB MySQL.
Autore : Cristiano Valli
ServerDatabase (l'ultima modifica è del
Questa guida spiega come automatizzare il backup dei databases MySql attraverso un apposito script che crea ed archivia i backups.
Descrizione
Lo script effettua giornalmente tramite cron il backup di tutti i databases recuperando automaticamente l'elenco. Per maggiori approfondimenti su cron, consulta anche la Guida di Cron.
Inizialmente viene costruito il nome del set di backup da creare utilizzando l'output del comando date.
Dopo l'eventuale rimozione di un backup temporaneo precedente ottengo l'elenco dei databases tramite mysqlshow redirezionando l'output sul file EL_DBS dopo l'applicazione di una serie di filtri: head, tail e tr.
Effettuo il conteggio del numero di databases e con un ciclo faccio il dump tramite mysqldump
Al termine i backup sono raggruppati (tar) e compressi (gzip).
Installazione
Per il funzionamento è necessario creare la struttura delle directory di backup.
Io utilizzo la directory /var/backup che contiene due sottodirectory /var/backup/stored e /var/backup/temp, ma il tutto è configurabile nello script.
Creare le directory per archiviare i backups:
sudo mkdir /var/backup
sudo mkdir /var/backup/temp
sudo mkdir /var/backup/stored
Creare lo script myback ed inserirlo nella directory /etc/cron.daily
Ricordatevi di modificare MY_USR e MY_PWD
Impostare i permessi dello script
sudo chmod 755 myback
Script
#!/bin/bash
# Created by Beniamino Caputo
#
# Definizione Variabili
#
MY_DIR= # Directory Binari MySQL se non sono in PATH
MY_HST=localhost # Host del MySql server
MY_USR=root_mysql # User di MySql
MY_PWD=password_root_mysql # Password di accesso
EL_DBS=/var/backup/temp/elencodb # File Elenco Databases nel Backup
BK_DIR=/var/backup/temp # Directory Backup
BK_NAM=/var/backup/stored/backup-$(date +%d-%m-%Y) # Nome del Backup (costruita automaticamente con la data)
#
# Elimino Eventuali Backup Temporanei Presenti
#
rm -f ${BK_DIR}/*
#
# Creazione Elenco Databases
#
${MY_DIR}mysqlshow --host=$MY_HST --user=$MY_USR --password=$MY_PWD | head -n -1 | tail -n +4 | tr -d " |" > $EL_DBS
#
# Conteggio Numero di Databases
#
ndb=$(wc -l < "$EL_DBS")
#
# Ciclo Dump dei Databases
#
for db in `seq $ndb`
do
read db
${MY_DIR}mysqldump --host=$MY_HST --user=$MY_USR --password=$MY_PWD --databases $db > $BK_DIR/$db
done <"$EL_DBS"
#
# Creazione File TAR
#
tar -cf $BK_NAM.tar $BK_DIR
#
# Compressione File Tar
#
gzip -f $BK_NAM.tar
#
# Elimino Eventuali Backup Temporanei Presenti
#
rm -f ${BK_DIR}/*
exit 0
Configurazione
In testa ci sono alcune variabili per eventuale configurazione:
MY_DIR
Directory contenente i binari di MySql. In Ubuntu non è necessaria in quanto presente in PATH.
Nel caso di installazione manuale si può inserirla, avendo l'accortezza di terminarla con /
Es. MY_DIR=/path/binari/mysql/
MY_HST
L'hostname della macchina .... localhost va bene.
MY_USR
L'utente del server MySql
MY_PWD
La password dell'utente MySql
EL_DBS
Nome del file che conterrà l'elenco dei databases
BK_DIR
La directory temporanea per il dump dei databases
BK_NAM
Nome del file di backup