SlideShare una empresa de Scribd logo
1 de 37
1
Alessandro “jekil” Tanasi
alessandro@lonerunners.net
http://www.lonerunners.net/
LUGTrieste
http://trieste.linux.it/
2
L E   B A S I   D I   D A T I
●
Database
Una collezione di dati, che contengono le informazioni di
interesse per il nostro sistema informativo
●
Gestore del Database (DBMS Data Base Management 
System)
Si occupa della corretta gestione dei nostri dei dati (database)
✔
assicura integrità e consistenza
✔
sicurezza
✔
affidabilità e disponibilità
✔
efficienza e gestione errori
3
I L   M O D E L L O   R E L A Z I O N A L E
I dati sono memorizzati in un modello relazionale[1] ideato da 
Codd[2] e riassunto nelle sue 12 regole.
[1] http://www.acm.org/classics/nov95/toc.html
[2] http://en.wikipedia.org/wiki/Edgar_F._Codd
Matricola Nome Cognome
1 Pippo Rossi
2 Pluto Verdi
Studente
Si opera su tabelle
Relazione:
●
ogni riga (record) è diversa dalle altre
●
i dati possono essere associati
4
P E R C H E   S C E G L I E R E   M y S Q L ?
 Velocità
 Capacità
 Facilità d'uso
 Supporto del linguaggio SQL
 Connettività e sicurezza
 Portabilità
 Dimensioni ridotte
 Costi (licenza GPL e commerciale)
 Open Source
 Disponibile per oltre 20 piattaforme
Utilizzato da: NASA, Yahoo, Google Ad, Slashdot, HP, AOL
MySQL è un RDBMS[1] general purporse 
[1] Affermazione discutibile, ma facciamo finta di niente per il momento :)
5
P R E S T A Z I O N I
Ha prestazioni di tutto rispetto, può confrontarsi con concorrenti 
commerciali.
Test eseguito dalla rivista eWeek nel febbraio 2002 
fonte http://www.eweek.com
6
I N S T A L L A Z I O N E   D A   B I N A R I
Esistono binari precompilati con diversi compilatori per molte 
piattaforme.
Oppure si può utilizzare un gestore di pacchetti se disponibile
apt­get install mysql­server mysql­common mysql­client
groupadd mysql
useradd ­g mysql mysql
cd /usr/local
gunzip < /PATH/TO/MYSQL­VERSION­OS.tar.gz | tar xvf ­
ln ­s FULL­PATH­TO­MYSQL­VERSION­OS mysql
cd mysql
scripts/mysql_install_db ­­user=mysql
chown ­R root  .
chown ­R mysql data
chgrp ­R mysql .
bin/mysqld_safe ­­user=mysql &
7
I N S T A L L A Z I O N E   D A   S O R G E N T I
groupadd mysql
useradd ­g mysql mysql
gunzip < mysql­VERSION.tar.gz | tar ­xvf ­
cd mysql­VERSION
./configure ­­prefix=/usr/local/mysql
make
make install
cp support­files/my­medium.cnf /etc/my.cnf
cd /usr/local/mysql
bin/mysql_install_db ­­user=mysql
chown ­R root  .
chown ­R mysql var
chgrp ­R mysql .
bin/mysqld_safe ­­user=mysql &
Personalizzare e ottimizzare l'installazione, guardare le opzioni con 
./configure ­­help
8
F I L E   D I   C O N F I G U R A Z I O N E
Nel file di configurazione my.cnf vengono memorizzate le opzioni per 
l'avvio del server
#commento commenti
[gruppo] nome del programma o del gruppo per cui valgono le 
opzioni sottostanti
opzione ­­opzione
opzione=valore  ­­opzione=valore
set­variable = variabile=valore ­­set­variable variabile=valore
[mysqld]
port=3306
socket=/tmp/mysql.sock
set­variable = key_buffer_size=16M
[mysqldump]
quick
9
F U N Z I O N A M E N T O
File
Directory
I dati* vengono rappresentati sul file system con directory 
(database) e file (tabelle). 
Le prestazioni sono limitate da quelle del file system.
Datadir
*I dati InnoDB sono memorizzati in modo diverso dall'apposito gestore
10
G L I   U T E N T I
Ogni utente dispone di propri privilegi.
Le utenze sono memorizzate nel database mysql, al cui interno ci 
sono le tabelle di sistema:
 user : contiene le utenze e i loro privilegi
 db : contiene la lista dei database
 host : contiene l'elenco degli host 
 tables_priv : indica i privilegi sulle tabelle
 columns_priv : indica i privilegi sui campi
Per modificare i permessi si utilizza mysqladmin oppure GRANT,
meglio non operare a mano sulle tabelle di sistema, possono non
essere consistenti.
11
R E G I S T R I   E   V A R I A B I L I
I registri di log memorizzano gli eventi generati dal DBMS:
registro generale delle query
registro delle query lente
registro degli aggiornamenti (testo e binario)
registro degli errori
Le variabili contengono:
variabili di sistema: indicano come il server è stato configurato
alcune possono essere cambiate  a runtime
variabili di sessione: mantenute per ogni client che si connette
variabili di stato: contengono informazioni statistiche  
12
S Q L   :   S T R U C T U R E D   Q U E R Y  
L A N G U A G E
 Controlla il DBMS
 Manipola dati
 Amministrazione utenti
 Facile e naturale da utilizzare
Alcuni statements:
SELECT nome FROM clienti ORDER BY nome
DELETE * FROM criceti WHERE eta = 1
CREATE TABLE tabella (day DATE NOT NULL, nome VARCHAR(10))
Linguaggio 
“universale” per 
l'interrogazione di 
DBMS.
Specifica come i dati devono essere definiti e come devono essere 
manipolati
13
T I P I   D I   D A T I
N
u
Numerici
INT, FLOAT, DOUBLE, DECIMAL
Stringhe
CHAR, VARCHAR, BLOB, TEXT, ENUM, SET
Temporali
DATE, TIME, DATETIME, TIMESTAMP
Speciali
Specifiche OpenGIS
ENUM e SET sono enumerazioni, cioè variabili che devono 
essere scelte tra dei valori predefiniti, la seconda consente una 
scelta multipla
14
T I P I   D I   T A B E L L E
 ISAM
Vecchio modello ad accesso sequenziale
 MyISAM
Maggiore dimensione, migliore gestione indicie e compressione, 
portabilità
 MERGE
Costrutto logico che incorpora più tabelle MyISAM
 BDB
Il gestore metta a disposizione transazioni e recovery automatico
 InnoDB
Il gestore metta a disposizione transazioni, locking migliore, 
recovery automatico e gestione chiavi esterne
 HEAP
15
J O I N
Un enunciato che utilizza dati da più tabelle 
 Join completo
nella parte FROM compaiono più tabelle
SELECT tab1.* , tab2.* FROM tab1 , tab2 WHERE 
tab1.ind = tab2.ind
 Join sinistro
mostra le righe che soddisfano il join ma anche le righe della 
tabella di sinistra 
SELECT tab1.* , tab2.* FROM tab1 LEFT JOIN tab2 ON 
tab1.ind = tab2.ind
 Join destro
mostra le righe che soddisfano il join ma anche le righe della 
tabella di destra
SELECT tab1.* , tab2.* FROM tab1 RIGHT JOIN tab2 ON 
16
I N D I C I
 si possono avere molti indici per una tabella
 indici fulltext
 indici su colonne multiple
 aumentano le prestazioni nelle ricerca ma le rallentano
nelle modifiche
Un indice serve per trovare facilmente le informazioni.
Da utilizzare su tutti i campi che vengono utilizzati nelle ricerche o join. 
Animale
Gatto
Mucca
Gatto
Tartaruga
Gatto
Gatto
Mucca
Tartaruga
17
S U B Q U E R Y
Una subquery è una query annidata in una altra 
SELECT * FROM tabella1 WHERE colonna1 = 
(SELECT colonna2 FROM tabella2) 
Vantaggi:
 le query possono essere strutturate
 un metodo alternativo all'uso dei join
 sono facilmente leggibili
 in certi casi l'utilizzo delle subquery aumenta le prestazioni
 ci risparmia i “salti mortali” con i join
18
T R A N S A Z I O N I
Insieme di query eseguite senza interruzioni
COMMIT (esecuzione), ROLLBACK (annullamento)
Tabelle transazionali: BDB, InnoDB
Tabelle non transazionali: ISAM, MyISAM, HEAP
BEGIN
#qui facciamo tutte le query
COMMIT
BEGIN
#qui facciamo tutte le query
ERROR 1060 blablabla
ROLLBACK
19
C H I A V I   E S T E R N E
Le chiavi esterne aiutano a mantenere la consistenza dei dati
Le chiavi esterne (foreign key) definiscono delle relazioni tra tabelle a 
livello logico, cioè una relazione tra un un campo di una tabella e un 
campo di un altra. Il DBMS userà queste relazioni per mantenere 
l'integrità relazionale.
IdUser Nome
1 Gianni
2 Pippo
3 Gigi
IdUser Fattura
1 AEFRG
3 FGRGE
3 GRSAE
2 GTESA
Ogni fattura deve essere associata ad un utente
20
C L I E N T
21
A V V I O   E   A R R E S T O
mysqld : il demone server
mysqld_safe : uno script che si occupa di gestire in modo sicuro il 
demone
L'arresto avviene con il comando mysqladmin shutdown oppure 
SHUTDOWN
­­datadir=directory indica la posizione della 
directory dei programmi
­­basedir=directory indica la posizione della 
directory dei dati
­­defaults­file=file legge il file di opzioni 
indicato al posto di quello di default
­­pid­file=file indica la posizione del file pid
­­socket=file indica la posizione del socket
­­port=numero la porta su cui il server è in ascolto
­­nice=numero il valore di nice con cui viene 
eseguito il server
22
B A C K U P
Medoti di backup:
 backup fisico a mano (tar ecc..)
utile solo in casi particolari
 mysqldump: ritorna una rappresentazione SQL dei database,
molto comoda da usare
 mysqlhotcopy: script perl che esegue la copia fisica di tabelle
e db
Controllo delle tabelle:
 myisamchk: controlla e ripara
 mysqlcheck: controlla, ripara e ottimizza, può essere usato
con il server in esecuzione
23
O T T I M I Z Z A Z I O N E
Meccanismi di ottimizzazione automatici:
 l'ottimizzatore delle query
 la cache delle query
Per i programmatori:
 usare gli indici
 usare poco il casting e le funzioni
 non sprecare spazio
 dichiarare le colonne NOT NULL
 provare query scritte in vari modi
 usare OPTIMIZE TABLE
Per gli amministratori:
 aumentare la cache
 disabilitare i gestori non usati
 compliare con librerie statiche
24
S I C U R E Z Z A
 Impedire accesso al file system, gli utenti non devono poter 
leggere la directory dei dati
 Proteggere i file di opzioni
 Rimuovere account anonimi (vengono installati di default!!)
 Specificare gli host da cui si collegano gli utenti se possibile
 Usare connessioni SSL
 Volendo il server puo' essere messo in una jail chroot
 Se utilizzato il locale il server deve ascoltare solo su localhost
25
P h p M y A d m i n
E' un utility di amministrazione 
utilizzabile via web, richiede un server 
web e il modulo php
Manipolare dati, tabelle, database
Ogni utene gestisce il suo database
Eseguire query SQL
Creazione automatica di query 
complesse
Amministrare utenti e privilegi
Esportare dati in formato CSV, XML, 
Latex
Effettuare backup/restore dei dati
Monitorare il server
26
M y S Q L C C
 GUI per l'amministrazione
 platform indipendent e GPL
 amministrazione utenze e tabelle
 supporto per server multipli
 editor di query 
 visualizza le immagini nei BLOB
 utile per testare e ottimizzare le query
 strumento orientato ai programmatori
http://www.mysql.com/products/mysqlcc/
27
M y S Q L   A d m i n i s t r a t o r
 facile da utilizzare
 multipiattaforma
 statistiche in tempo reale
 facile ottimizzazione
 backup e restore
 gestione repliche
 gestione variabili server
 controllo dei log
 strumento orientato ai sistemisti
http://www.mysql.com/products/administrator/
28
Q U E R Y   B R O W S E R
 editor di query 
 utile per testare e ottimizzare 
le query
 strumento orientato ai 
programmatori
http://dev.mysql.com/downloads/query­browser/1.1.html
29
D B   D E S I G N E R   4
 strumento grafico per la 
realizzazione di schemi logici 
 query editor
 reverse engeneering
 version control
 vari plugin
 purtroppo non supporta le viste
http://www.fabforce.net/dbdesigner4/
30
I N T E R F A C C I A M E N T O
Esistono API per tutti i linguaggi 
di programmazione più utilizzati, 
ad esempio:
●
 C / C++ / C#
●
 Java
●
 Perl
●
 Python
●
 Delphi
●
 Ruby
●
 PHP
●
 e molti altri..
Possibilità di includere il 
server in modo 
embedded 
nell'applicazione.
31
A L T A   A F F I D A B I L I T A '
Idea: una serie di macchine che condividono gli stessi dati, se una
cade le altre prendono il suo posto
 inizialmente i dati sono 
replicati su tutte le macchine
 gli slave vengono aggiornati 
attraverso il binary log del 
master
 se il master cade gli slave 
prendono il suo posto
Vantaggi:
 fault tolerance
 niente single point of failure
 fail over automatico
 facilità
32
C L U S T E R
Idea: distribuire il carico di lavoro su un pull di macchine
 la macchina MGM coordina i nodi
 i nodi DBx contengono il database
e soddisfano le richieste 
33
M A X D B
Implementazione di MySQL certificata per l'utilizzo con SAP®
 studiato per gestire un gran numero di transazioni
 supporta le stored procedures
 distribuito con interfaccia grafica e web
 supporta meno interfacce di programmazione
 funzioni di amministrazione (job scheduling, eventi, allarmi)
 disponibile per poche piattaforme
 usa un protocollo proprietario di rete
34
I L   L A T O   O S C U R O
Funzionalità non supportate:
 Trigger [*]
 Stored Procedure [*]
 Viste [*]
 ­­ come commento
 Privilegi a livello di record
 Mancanza del supporto a particolari tipi di query (ad es. alberi)
[*] supportato dalla versione 5 attualmente in alpha
Vecchie versioni non supportano:
 l'integrità referenziale
 le subquery
Potremmo discutere il fatto che MySQL attualmente sia un DBMS
35
R I F E R I M E N T I
“SQL” M. J. Hernandez, Mondadori
“Basi di dati, modelli e linguaggi di interrogazione” P. Atzeni, 
McGraw­Hill
“Basi di dati, architetture e linee di evoluzione” P. Atzeni, 
McGraw­Hill
“MySQL” P. DuBois, Pearson
“SQL The Complete Reference” J. R. Groff, McGraw­Hill
“Foundamentals of database systems” Elmasri/Navathe, 
Addison Wesley
“MySQL Reference Manual” http://dev.mysql.com/doc/
36
D O M A N D E
DOMANDE 
...E POMODORI
Grazie per la Vostra attenzione
37
C O P Y R I G H T
Questo documento viene rilasciato sotto licenza 
Alcoolware, la quale non è altro che una normale 
licenza Creative Commons Attribute­NonCommercial­
ShareALike [1] ma con l'aggiunta che se mi 
incontrate dobbiamo andare a bere qualcosa.
In sintesi è liberamente distribuibile per usi non 
commerciali, copiabile e modificabile purchè 
citiate l'autore e la fonte.
Se volete distribuire questo documento sul vostro 
sito siete pregati per favore di comunicarmelo in 
modo che possa spedirvi le nuove versioni.
[
[1] http://creativecommons.org/licenses/by­nc­sa/2.0/

Más contenido relacionado

Similar a MySQL

MongoDB
MongoDBMongoDB
MongoDBNaLUG
 
Guida SQL: le basi per iniziare a programmare i database
Guida SQL: le basi per iniziare a programmare i databaseGuida SQL: le basi per iniziare a programmare i database
Guida SQL: le basi per iniziare a programmare i databaseBTF Traduzioni SEO Sviluppo Web
 
Basi di dati e gis n
Basi di dati e gis nBasi di dati e gis n
Basi di dati e gis nimartini
 
Py a6 python-database
Py a6 python-databasePy a6 python-database
Py a6 python-databaseMajong DevJfu
 
Basi di Dati - A1 - Introduzione alle basi di dati
Basi di Dati - A1 - Introduzione alle basi di datiBasi di Dati - A1 - Introduzione alle basi di dati
Basi di Dati - A1 - Introduzione alle basi di datiMajong DevJfu
 
PostgreSQL : Architettura di storage
PostgreSQL : Architettura di storagePostgreSQL : Architettura di storage
PostgreSQL : Architettura di storageEnrico Pirozzi
 
Note di Data Warehouse e Business Intelligence - Tecniche di Naming Conventio...
Note di Data Warehouse e Business Intelligence - Tecniche di Naming Conventio...Note di Data Warehouse e Business Intelligence - Tecniche di Naming Conventio...
Note di Data Warehouse e Business Intelligence - Tecniche di Naming Conventio...Massimo Cenci
 
Database - Appunti teorici
Database - Appunti teoriciDatabase - Appunti teorici
Database - Appunti teoriciLuca Santoro
 
A. Mattiocco - RJSDMX (Connettori SDMX per Software Statistici)
A. Mattiocco - RJSDMX (Connettori SDMX per Software Statistici) A. Mattiocco - RJSDMX (Connettori SDMX per Software Statistici)
A. Mattiocco - RJSDMX (Connettori SDMX per Software Statistici) Istituto nazionale di statistica
 
Big data - stack tecnologico
Big data -  stack tecnologicoBig data -  stack tecnologico
Big data - stack tecnologicoConsulthinkspa
 

Similar a MySQL (20)

MongoDB
MongoDBMongoDB
MongoDB
 
Guida SQL: le basi per iniziare a programmare i database
Guida SQL: le basi per iniziare a programmare i databaseGuida SQL: le basi per iniziare a programmare i database
Guida SQL: le basi per iniziare a programmare i database
 
A. Stanco - SDMX Registry
A. Stanco - SDMX Registry A. Stanco - SDMX Registry
A. Stanco - SDMX Registry
 
Ado net (versione 1 e 2)
Ado net (versione 1 e 2)Ado net (versione 1 e 2)
Ado net (versione 1 e 2)
 
Excel development e sql 2.1
Excel development e sql   2.1Excel development e sql   2.1
Excel development e sql 2.1
 
Basi Di Dati 01
Basi Di Dati 01Basi Di Dati 01
Basi Di Dati 01
 
Dbms
DbmsDbms
Dbms
 
Basi di dati
Basi di dati Basi di dati
Basi di dati
 
Database
DatabaseDatabase
Database
 
Basi di dati e gis n
Basi di dati e gis nBasi di dati e gis n
Basi di dati e gis n
 
Py a6 python-database
Py a6 python-databasePy a6 python-database
Py a6 python-database
 
Basi di Dati - A1 - Introduzione alle basi di dati
Basi di Dati - A1 - Introduzione alle basi di datiBasi di Dati - A1 - Introduzione alle basi di dati
Basi di Dati - A1 - Introduzione alle basi di dati
 
C3 Ddl1
C3 Ddl1C3 Ddl1
C3 Ddl1
 
PostgreSQL : Architettura di storage
PostgreSQL : Architettura di storagePostgreSQL : Architettura di storage
PostgreSQL : Architettura di storage
 
Note di Data Warehouse e Business Intelligence - Tecniche di Naming Conventio...
Note di Data Warehouse e Business Intelligence - Tecniche di Naming Conventio...Note di Data Warehouse e Business Intelligence - Tecniche di Naming Conventio...
Note di Data Warehouse e Business Intelligence - Tecniche di Naming Conventio...
 
Database - Appunti teorici
Database - Appunti teoriciDatabase - Appunti teorici
Database - Appunti teorici
 
A. Mattiocco - RJSDMX (Connettori SDMX per Software Statistici)
A. Mattiocco - RJSDMX (Connettori SDMX per Software Statistici) A. Mattiocco - RJSDMX (Connettori SDMX per Software Statistici)
A. Mattiocco - RJSDMX (Connettori SDMX per Software Statistici)
 
ORM - Introduzione
ORM - IntroduzioneORM - Introduzione
ORM - Introduzione
 
Big data - stack tecnologico
Big data -  stack tecnologicoBig data -  stack tecnologico
Big data - stack tecnologico
 
SQL Server2000
SQL Server2000SQL Server2000
SQL Server2000
 

Más de jekil

Names and virtual host discovery
Names and virtual host discoveryNames and virtual host discovery
Names and virtual host discoveryjekil
 
Cuckoo Sandbox: Automated malware analysis
Cuckoo Sandbox: Automated malware analysisCuckoo Sandbox: Automated malware analysis
Cuckoo Sandbox: Automated malware analysisjekil
 
Android Introduzione All Architettura Programmazione Sicurezza Serate A Tema ...
Android Introduzione All Architettura Programmazione Sicurezza Serate A Tema ...Android Introduzione All Architettura Programmazione Sicurezza Serate A Tema ...
Android Introduzione All Architettura Programmazione Sicurezza Serate A Tema ...jekil
 
Client Side Security Settordici Lugts
Client Side Security Settordici LugtsClient Side Security Settordici Lugts
Client Side Security Settordici Lugtsjekil
 
Android: Introduzione all'architettura, alla programmazione e alla sicurezza
Android: Introduzione all'architettura, alla programmazione e alla sicurezzaAndroid: Introduzione all'architettura, alla programmazione e alla sicurezza
Android: Introduzione all'architettura, alla programmazione e alla sicurezzajekil
 
Security by example
Security by exampleSecurity by example
Security by examplejekil
 
Sviluppo web con Ruby on Rails
Sviluppo web con Ruby on RailsSviluppo web con Ruby on Rails
Sviluppo web con Ruby on Railsjekil
 
XPath Injection
XPath InjectionXPath Injection
XPath Injectionjekil
 
Web Application Insecurity Uncensored
Web Application Insecurity UncensoredWeb Application Insecurity Uncensored
Web Application Insecurity Uncensoredjekil
 
Web Application Insecurity L D2007
Web Application Insecurity  L D2007Web Application Insecurity  L D2007
Web Application Insecurity L D2007jekil
 
Anonimato In Rete Summer Of Linux2007
Anonimato In Rete Summer Of Linux2007Anonimato In Rete Summer Of Linux2007
Anonimato In Rete Summer Of Linux2007jekil
 
Linux Nelle Aziende Summer Of Linux 2007
Linux Nelle Aziende Summer Of Linux 2007Linux Nelle Aziende Summer Of Linux 2007
Linux Nelle Aziende Summer Of Linux 2007jekil
 
Linux Nelle Aziende Installfest2007
Linux Nelle Aziende Installfest2007Linux Nelle Aziende Installfest2007
Linux Nelle Aziende Installfest2007jekil
 
Sicurezza Informatica Nelle Aziende Installfest2007
Sicurezza Informatica Nelle Aziende Installfest2007Sicurezza Informatica Nelle Aziende Installfest2007
Sicurezza Informatica Nelle Aziende Installfest2007jekil
 
Introduzione all'analisi forense
Introduzione all'analisi forenseIntroduzione all'analisi forense
Introduzione all'analisi forensejekil
 
Intrusion Detection Systems
Intrusion Detection SystemsIntrusion Detection Systems
Intrusion Detection Systemsjekil
 
La sicurezza informatica nello studio legale
La sicurezza informatica nello studio legaleLa sicurezza informatica nello studio legale
La sicurezza informatica nello studio legalejekil
 

Más de jekil (17)

Names and virtual host discovery
Names and virtual host discoveryNames and virtual host discovery
Names and virtual host discovery
 
Cuckoo Sandbox: Automated malware analysis
Cuckoo Sandbox: Automated malware analysisCuckoo Sandbox: Automated malware analysis
Cuckoo Sandbox: Automated malware analysis
 
Android Introduzione All Architettura Programmazione Sicurezza Serate A Tema ...
Android Introduzione All Architettura Programmazione Sicurezza Serate A Tema ...Android Introduzione All Architettura Programmazione Sicurezza Serate A Tema ...
Android Introduzione All Architettura Programmazione Sicurezza Serate A Tema ...
 
Client Side Security Settordici Lugts
Client Side Security Settordici LugtsClient Side Security Settordici Lugts
Client Side Security Settordici Lugts
 
Android: Introduzione all'architettura, alla programmazione e alla sicurezza
Android: Introduzione all'architettura, alla programmazione e alla sicurezzaAndroid: Introduzione all'architettura, alla programmazione e alla sicurezza
Android: Introduzione all'architettura, alla programmazione e alla sicurezza
 
Security by example
Security by exampleSecurity by example
Security by example
 
Sviluppo web con Ruby on Rails
Sviluppo web con Ruby on RailsSviluppo web con Ruby on Rails
Sviluppo web con Ruby on Rails
 
XPath Injection
XPath InjectionXPath Injection
XPath Injection
 
Web Application Insecurity Uncensored
Web Application Insecurity UncensoredWeb Application Insecurity Uncensored
Web Application Insecurity Uncensored
 
Web Application Insecurity L D2007
Web Application Insecurity  L D2007Web Application Insecurity  L D2007
Web Application Insecurity L D2007
 
Anonimato In Rete Summer Of Linux2007
Anonimato In Rete Summer Of Linux2007Anonimato In Rete Summer Of Linux2007
Anonimato In Rete Summer Of Linux2007
 
Linux Nelle Aziende Summer Of Linux 2007
Linux Nelle Aziende Summer Of Linux 2007Linux Nelle Aziende Summer Of Linux 2007
Linux Nelle Aziende Summer Of Linux 2007
 
Linux Nelle Aziende Installfest2007
Linux Nelle Aziende Installfest2007Linux Nelle Aziende Installfest2007
Linux Nelle Aziende Installfest2007
 
Sicurezza Informatica Nelle Aziende Installfest2007
Sicurezza Informatica Nelle Aziende Installfest2007Sicurezza Informatica Nelle Aziende Installfest2007
Sicurezza Informatica Nelle Aziende Installfest2007
 
Introduzione all'analisi forense
Introduzione all'analisi forenseIntroduzione all'analisi forense
Introduzione all'analisi forense
 
Intrusion Detection Systems
Intrusion Detection SystemsIntrusion Detection Systems
Intrusion Detection Systems
 
La sicurezza informatica nello studio legale
La sicurezza informatica nello studio legaleLa sicurezza informatica nello studio legale
La sicurezza informatica nello studio legale
 

MySQL

  • 2. 2 L E   B A S I   D I   D A T I ● Database Una collezione di dati, che contengono le informazioni di interesse per il nostro sistema informativo ● Gestore del Database (DBMS Data Base Management  System) Si occupa della corretta gestione dei nostri dei dati (database) ✔ assicura integrità e consistenza ✔ sicurezza ✔ affidabilità e disponibilità ✔ efficienza e gestione errori
  • 3. 3 I L   M O D E L L O   R E L A Z I O N A L E I dati sono memorizzati in un modello relazionale[1] ideato da  Codd[2] e riassunto nelle sue 12 regole. [1] http://www.acm.org/classics/nov95/toc.html [2] http://en.wikipedia.org/wiki/Edgar_F._Codd Matricola Nome Cognome 1 Pippo Rossi 2 Pluto Verdi Studente Si opera su tabelle Relazione: ● ogni riga (record) è diversa dalle altre ● i dati possono essere associati
  • 4. 4 P E R C H E   S C E G L I E R E   M y S Q L ?  Velocità  Capacità  Facilità d'uso  Supporto del linguaggio SQL  Connettività e sicurezza  Portabilità  Dimensioni ridotte  Costi (licenza GPL e commerciale)  Open Source  Disponibile per oltre 20 piattaforme Utilizzato da: NASA, Yahoo, Google Ad, Slashdot, HP, AOL MySQL è un RDBMS[1] general purporse  [1] Affermazione discutibile, ma facciamo finta di niente per il momento :)
  • 5. 5 P R E S T A Z I O N I Ha prestazioni di tutto rispetto, può confrontarsi con concorrenti  commerciali. Test eseguito dalla rivista eWeek nel febbraio 2002  fonte http://www.eweek.com
  • 6. 6 I N S T A L L A Z I O N E   D A   B I N A R I Esistono binari precompilati con diversi compilatori per molte  piattaforme. Oppure si può utilizzare un gestore di pacchetti se disponibile apt­get install mysql­server mysql­common mysql­client groupadd mysql useradd ­g mysql mysql cd /usr/local gunzip < /PATH/TO/MYSQL­VERSION­OS.tar.gz | tar xvf ­ ln ­s FULL­PATH­TO­MYSQL­VERSION­OS mysql cd mysql scripts/mysql_install_db ­­user=mysql chown ­R root  . chown ­R mysql data chgrp ­R mysql . bin/mysqld_safe ­­user=mysql &
  • 7. 7 I N S T A L L A Z I O N E   D A   S O R G E N T I groupadd mysql useradd ­g mysql mysql gunzip < mysql­VERSION.tar.gz | tar ­xvf ­ cd mysql­VERSION ./configure ­­prefix=/usr/local/mysql make make install cp support­files/my­medium.cnf /etc/my.cnf cd /usr/local/mysql bin/mysql_install_db ­­user=mysql chown ­R root  . chown ­R mysql var chgrp ­R mysql . bin/mysqld_safe ­­user=mysql & Personalizzare e ottimizzare l'installazione, guardare le opzioni con  ./configure ­­help
  • 8. 8 F I L E   D I   C O N F I G U R A Z I O N E Nel file di configurazione my.cnf vengono memorizzate le opzioni per  l'avvio del server #commento commenti [gruppo] nome del programma o del gruppo per cui valgono le  opzioni sottostanti opzione ­­opzione opzione=valore  ­­opzione=valore set­variable = variabile=valore ­­set­variable variabile=valore [mysqld] port=3306 socket=/tmp/mysql.sock set­variable = key_buffer_size=16M [mysqldump] quick
  • 9. 9 F U N Z I O N A M E N T O File Directory I dati* vengono rappresentati sul file system con directory  (database) e file (tabelle).  Le prestazioni sono limitate da quelle del file system. Datadir *I dati InnoDB sono memorizzati in modo diverso dall'apposito gestore
  • 10. 10 G L I   U T E N T I Ogni utente dispone di propri privilegi. Le utenze sono memorizzate nel database mysql, al cui interno ci  sono le tabelle di sistema:  user : contiene le utenze e i loro privilegi  db : contiene la lista dei database  host : contiene l'elenco degli host   tables_priv : indica i privilegi sulle tabelle  columns_priv : indica i privilegi sui campi Per modificare i permessi si utilizza mysqladmin oppure GRANT, meglio non operare a mano sulle tabelle di sistema, possono non essere consistenti.
  • 11. 11 R E G I S T R I   E   V A R I A B I L I I registri di log memorizzano gli eventi generati dal DBMS: registro generale delle query registro delle query lente registro degli aggiornamenti (testo e binario) registro degli errori Le variabili contengono: variabili di sistema: indicano come il server è stato configurato alcune possono essere cambiate  a runtime variabili di sessione: mantenute per ogni client che si connette variabili di stato: contengono informazioni statistiche  
  • 12. 12 S Q L   :   S T R U C T U R E D   Q U E R Y   L A N G U A G E  Controlla il DBMS  Manipola dati  Amministrazione utenti  Facile e naturale da utilizzare Alcuni statements: SELECT nome FROM clienti ORDER BY nome DELETE * FROM criceti WHERE eta = 1 CREATE TABLE tabella (day DATE NOT NULL, nome VARCHAR(10)) Linguaggio  “universale” per  l'interrogazione di  DBMS. Specifica come i dati devono essere definiti e come devono essere  manipolati
  • 13. 13 T I P I   D I   D A T I N u Numerici INT, FLOAT, DOUBLE, DECIMAL Stringhe CHAR, VARCHAR, BLOB, TEXT, ENUM, SET Temporali DATE, TIME, DATETIME, TIMESTAMP Speciali Specifiche OpenGIS ENUM e SET sono enumerazioni, cioè variabili che devono  essere scelte tra dei valori predefiniti, la seconda consente una  scelta multipla
  • 14. 14 T I P I   D I   T A B E L L E  ISAM Vecchio modello ad accesso sequenziale  MyISAM Maggiore dimensione, migliore gestione indicie e compressione,  portabilità  MERGE Costrutto logico che incorpora più tabelle MyISAM  BDB Il gestore metta a disposizione transazioni e recovery automatico  InnoDB Il gestore metta a disposizione transazioni, locking migliore,  recovery automatico e gestione chiavi esterne  HEAP
  • 15. 15 J O I N Un enunciato che utilizza dati da più tabelle   Join completo nella parte FROM compaiono più tabelle SELECT tab1.* , tab2.* FROM tab1 , tab2 WHERE  tab1.ind = tab2.ind  Join sinistro mostra le righe che soddisfano il join ma anche le righe della  tabella di sinistra  SELECT tab1.* , tab2.* FROM tab1 LEFT JOIN tab2 ON  tab1.ind = tab2.ind  Join destro mostra le righe che soddisfano il join ma anche le righe della  tabella di destra SELECT tab1.* , tab2.* FROM tab1 RIGHT JOIN tab2 ON 
  • 16. 16 I N D I C I  si possono avere molti indici per una tabella  indici fulltext  indici su colonne multiple  aumentano le prestazioni nelle ricerca ma le rallentano nelle modifiche Un indice serve per trovare facilmente le informazioni. Da utilizzare su tutti i campi che vengono utilizzati nelle ricerche o join.  Animale Gatto Mucca Gatto Tartaruga Gatto Gatto Mucca Tartaruga
  • 17. 17 S U B Q U E R Y Una subquery è una query annidata in una altra  SELECT * FROM tabella1 WHERE colonna1 =  (SELECT colonna2 FROM tabella2)  Vantaggi:  le query possono essere strutturate  un metodo alternativo all'uso dei join  sono facilmente leggibili  in certi casi l'utilizzo delle subquery aumenta le prestazioni  ci risparmia i “salti mortali” con i join
  • 18. 18 T R A N S A Z I O N I Insieme di query eseguite senza interruzioni COMMIT (esecuzione), ROLLBACK (annullamento) Tabelle transazionali: BDB, InnoDB Tabelle non transazionali: ISAM, MyISAM, HEAP BEGIN #qui facciamo tutte le query COMMIT BEGIN #qui facciamo tutte le query ERROR 1060 blablabla ROLLBACK
  • 19. 19 C H I A V I   E S T E R N E Le chiavi esterne aiutano a mantenere la consistenza dei dati Le chiavi esterne (foreign key) definiscono delle relazioni tra tabelle a  livello logico, cioè una relazione tra un un campo di una tabella e un  campo di un altra. Il DBMS userà queste relazioni per mantenere  l'integrità relazionale. IdUser Nome 1 Gianni 2 Pippo 3 Gigi IdUser Fattura 1 AEFRG 3 FGRGE 3 GRSAE 2 GTESA Ogni fattura deve essere associata ad un utente
  • 20. 20 C L I E N T
  • 21. 21 A V V I O   E   A R R E S T O mysqld : il demone server mysqld_safe : uno script che si occupa di gestire in modo sicuro il  demone L'arresto avviene con il comando mysqladmin shutdown oppure  SHUTDOWN ­­datadir=directory indica la posizione della  directory dei programmi ­­basedir=directory indica la posizione della  directory dei dati ­­defaults­file=file legge il file di opzioni  indicato al posto di quello di default ­­pid­file=file indica la posizione del file pid ­­socket=file indica la posizione del socket ­­port=numero la porta su cui il server è in ascolto ­­nice=numero il valore di nice con cui viene  eseguito il server
  • 22. 22 B A C K U P Medoti di backup:  backup fisico a mano (tar ecc..) utile solo in casi particolari  mysqldump: ritorna una rappresentazione SQL dei database, molto comoda da usare  mysqlhotcopy: script perl che esegue la copia fisica di tabelle e db Controllo delle tabelle:  myisamchk: controlla e ripara  mysqlcheck: controlla, ripara e ottimizza, può essere usato con il server in esecuzione
  • 23. 23 O T T I M I Z Z A Z I O N E Meccanismi di ottimizzazione automatici:  l'ottimizzatore delle query  la cache delle query Per i programmatori:  usare gli indici  usare poco il casting e le funzioni  non sprecare spazio  dichiarare le colonne NOT NULL  provare query scritte in vari modi  usare OPTIMIZE TABLE Per gli amministratori:  aumentare la cache  disabilitare i gestori non usati  compliare con librerie statiche
  • 24. 24 S I C U R E Z Z A  Impedire accesso al file system, gli utenti non devono poter  leggere la directory dei dati  Proteggere i file di opzioni  Rimuovere account anonimi (vengono installati di default!!)  Specificare gli host da cui si collegano gli utenti se possibile  Usare connessioni SSL  Volendo il server puo' essere messo in una jail chroot  Se utilizzato il locale il server deve ascoltare solo su localhost
  • 25. 25 P h p M y A d m i n E' un utility di amministrazione  utilizzabile via web, richiede un server  web e il modulo php Manipolare dati, tabelle, database Ogni utene gestisce il suo database Eseguire query SQL Creazione automatica di query  complesse Amministrare utenti e privilegi Esportare dati in formato CSV, XML,  Latex Effettuare backup/restore dei dati Monitorare il server
  • 26. 26 M y S Q L C C  GUI per l'amministrazione  platform indipendent e GPL  amministrazione utenze e tabelle  supporto per server multipli  editor di query   visualizza le immagini nei BLOB  utile per testare e ottimizzare le query  strumento orientato ai programmatori http://www.mysql.com/products/mysqlcc/
  • 27. 27 M y S Q L   A d m i n i s t r a t o r  facile da utilizzare  multipiattaforma  statistiche in tempo reale  facile ottimizzazione  backup e restore  gestione repliche  gestione variabili server  controllo dei log  strumento orientato ai sistemisti http://www.mysql.com/products/administrator/
  • 28. 28 Q U E R Y   B R O W S E R  editor di query   utile per testare e ottimizzare  le query  strumento orientato ai  programmatori http://dev.mysql.com/downloads/query­browser/1.1.html
  • 29. 29 D B   D E S I G N E R   4  strumento grafico per la  realizzazione di schemi logici   query editor  reverse engeneering  version control  vari plugin  purtroppo non supporta le viste http://www.fabforce.net/dbdesigner4/
  • 30. 30 I N T E R F A C C I A M E N T O Esistono API per tutti i linguaggi  di programmazione più utilizzati,  ad esempio: ●  C / C++ / C# ●  Java ●  Perl ●  Python ●  Delphi ●  Ruby ●  PHP ●  e molti altri.. Possibilità di includere il  server in modo  embedded  nell'applicazione.
  • 31. 31 A L T A   A F F I D A B I L I T A ' Idea: una serie di macchine che condividono gli stessi dati, se una cade le altre prendono il suo posto  inizialmente i dati sono  replicati su tutte le macchine  gli slave vengono aggiornati  attraverso il binary log del  master  se il master cade gli slave  prendono il suo posto Vantaggi:  fault tolerance  niente single point of failure  fail over automatico  facilità
  • 32. 32 C L U S T E R Idea: distribuire il carico di lavoro su un pull di macchine  la macchina MGM coordina i nodi  i nodi DBx contengono il database e soddisfano le richieste 
  • 33. 33 M A X D B Implementazione di MySQL certificata per l'utilizzo con SAP®  studiato per gestire un gran numero di transazioni  supporta le stored procedures  distribuito con interfaccia grafica e web  supporta meno interfacce di programmazione  funzioni di amministrazione (job scheduling, eventi, allarmi)  disponibile per poche piattaforme  usa un protocollo proprietario di rete
  • 34. 34 I L   L A T O   O S C U R O Funzionalità non supportate:  Trigger [*]  Stored Procedure [*]  Viste [*]  ­­ come commento  Privilegi a livello di record  Mancanza del supporto a particolari tipi di query (ad es. alberi) [*] supportato dalla versione 5 attualmente in alpha Vecchie versioni non supportano:  l'integrità referenziale  le subquery Potremmo discutere il fatto che MySQL attualmente sia un DBMS
  • 35. 35 R I F E R I M E N T I “SQL” M. J. Hernandez, Mondadori “Basi di dati, modelli e linguaggi di interrogazione” P. Atzeni,  McGraw­Hill “Basi di dati, architetture e linee di evoluzione” P. Atzeni,  McGraw­Hill “MySQL” P. DuBois, Pearson “SQL The Complete Reference” J. R. Groff, McGraw­Hill “Foundamentals of database systems” Elmasri/Navathe,  Addison Wesley “MySQL Reference Manual” http://dev.mysql.com/doc/
  • 36. 36 D O M A N D E DOMANDE  ...E POMODORI Grazie per la Vostra attenzione
  • 37. 37 C O P Y R I G H T Questo documento viene rilasciato sotto licenza  Alcoolware, la quale non è altro che una normale  licenza Creative Commons Attribute­NonCommercial­ ShareALike [1] ma con l'aggiunta che se mi  incontrate dobbiamo andare a bere qualcosa. In sintesi è liberamente distribuibile per usi non  commerciali, copiabile e modificabile purchè  citiate l'autore e la fonte. Se volete distribuire questo documento sul vostro  sito siete pregati per favore di comunicarmelo in  modo che possa spedirvi le nuove versioni. [ [1] http://creativecommons.org/licenses/by­nc­sa/2.0/