I comandi Linux: MySQL | ALTRI capitoli | |||||
Database e Database Management System Non credo che esista più un solo sito internet, una sola azienda, un solo utente privato, dotati di un computer, che, consapevolmente o meno, non abbia utilizzato, almeno una volta nella vita, un sistema di database, fosse anche il programma Excel di Microsoft. I database sono il pilastro su cui si regge l'intera struttura di internet. I database sono la memoria collettiva dell'intera umanità. Non c'è informazione che non venga catalogata e memorizzata in un qualche database. Un database è un insieme organizzato di dati, salvati su un hard disk, che descrive un determinato oggetto. Una rubrica telefonica, per esempio, è un oggetto che viene conservato, normalmente, in un database:
Un buon database è un insieme di dati, salvati su un hard disk ed organizzati in modo tale da renderne facile il ritrovamento e l'acquisizione. Un Database Management System ( DBMS ) è un insieme di dati e funzioni, o programmi, che permettono l'accesso ai dati. I dati, in un database, vengono conservati in tabelle, a loro volta composte da singoli record, ciascuno dei quali composto da un numero fisso di campi ( field ). Una tabella, un insieme di record correlati, viene salvata in un file. Un record è un gruppo di campi correlati, come il campo Nome, il campo Telefono ed il campo Indirizzo in una tabella di elenco telefonico. Un campo contiene un singolo dato, il cui tipo deve essere definito al momento della creazione della tabella: in un campo di tipo Integer, per esempio, non sarà possibile inserire un dato di tipo Stringa Testuale. Esistono molti tipi di database: flat-file ( un semplice file di testo, con un record per riga ), gerarchico ( più file, correlati tra loro da una relazione gerarchica di tipo padre-figlio ), relazionale, object-oriented ( indicati per la gestione di dati complessi, come le immagini, o BLOB, Binary Large OBject ), xml e altri. Un database relazionale è un database in cui i dati sono organizzati in un insieme di relazioni. Ciascuna relazione può essere rappresentata in forma tabulare, tanto che, in molti casi, una relazione equivale ad una tabella. Attenzione: non sempre una tabella rappresenta una relazione. Che tipo di relazione potrebbe mai rappresentare, per esempio, una tabella come la seguente?
È più semplice pensare ad un database relazionale come composto da una serie di variabili ( le tabelle ), chiamate " relation variable " o " relvar ", di cui l'utente deve, preventivamente, indicare il tipo. Il tipo di variabile è espresso dall'insieme delle relazioni esistenti tra una lista di attributi assegnati alla variabile, a ciascuno dei quali, a sua volta, deve essere assegnato un particolare tipo di dato. Nel nostro esempio precedente, " Rubrica " rappresenterebbe, così, il nome della variabile, mentre " Nome ", " Telefono ", " Indirizzo " rappresenterebbero i nomi degli attributi assegnati alla variabile:
In questo modo, dovrebbe risultare chiaro il termine " relazione ", con cui si designa, solitamente, ciò che noi, usualmente, definiamo " tabella ". Se un " heading " è l'insieme dei nomi degli attributi assegnati ad una specifica relazione:
quella relazione sarà composta anche da un insieme ( body ) di liste di valori, assegnati a ciascuno degli attributi:
Se definiamo un attributo: campo:
avremo un insieme di righe ( row o tuple o record ), ciascuna composta dalla sequenza dei valori assegnati a ciascuno dei campi:
Il numero degli attributi assegnati ad una relazione esprime il grado ( degree ) della relazione, mentre il numero di row ( tuple o record ) ne esprime la cardinaltà. Se una tabella rappresenta un particolare oggetto, nel nostro esempio, un abbonato telefonico, con l'insieme dei suoi attributi ( heading ), ciascun record della tabella rappresenta un'istanza reale di quell'oggetto universale. Ogni abbonato ha un nome, un indirizzo ed un numero telefonico. Il singolo abbonato reale, contenuto nella Row 1, ha nome Sam Raimi, risiede in via bai e risponde al numero telefonico 02 89745xxx. SQL ( Structured Query Language ) è il linguaggio utilizzato per la gestione di un database relazionale, che permette di inviare comandi al server SQL, per creare ed eliminare database, creare ed eliminare tabelle, inserire, recuperare ed aggiornare dati. I comandi SQL vengono eseguiti da un gestore del database, un programma speciale che è in grado di gestire i dati. SQL è un DBMS ( Database Management System ). Un DBMS dedicato ad un database relazionale viene chiamato RDBMS ( Relational Database Management System ). MySQL e mSQL ( miniSQL ) sono altri due esempi di RDBMS. SQL è il linguaggio standard utilizzato dalla maggior parte dei sistemi RDBMS. MySQL e mSQL sono motori gratuiti di database derivati da SQL, di cui supportano solo una parte di funzionalità: in alcuni casi, lavorando con applicazioni particolarmente complesse, è possibile che dobbiate applicarvi con maggior impegno, per attivare alcune funzioni che sarebbero immediatamente disponibili con sistemi di database più costosi. MySQL è un programma client/server Open Source e liberamente disponibile. MySQL è portabile, funziona su molti sistemi operativi, compresi Mac OS X e Windows. MySQL è in grado di gestire database composti da miliardi di record. MySQL è composto dai seguenti programmi:
il demone ( server ) MySQL, che resta in attesa delle richieste di connessione, da parte dei client, ed esegue le query ( interrogazioni ) inviate dai client, restituendone i risultati. E' multi-threaded, nel senso che può elaborare più di una query alla volta. Un demone è un programma che viene lanciato dal sistema operativo, in fase di apertura della sessione di lavoro ( che coincide con l'accensione del computer o l'accesso al sistema ), e resta in esecuzione fino alla fine della sessione di lavoro ( che coincide con lo spegnimento del computer o la disconnessione dal sistema ). Per sapere se il demone
Se il demone è in esecuzione, il comando restituirà una riga di output simile alla seguente:
che specifica le risorse dedicate, dal sistema, al demone
è il programma client. Si tratta di un'interfaccia a riga di comando per inviare comandi al server MySQL. Esistono diversi programmi client ad interfaccia grafica o User-friendly, il più noto dei quali è un programma in PHP:
che richiede l'installazione di un server Apache, dell'interprete PHP, del package PHP MySQL.
è il programma client, a riga di comando, che esegue funzioni di amministrazione sul server MySQL, quali creare ed eliminare tabelle. Può essere usato per recuperare alcune informazioni sul server MySQL, quali la versione, i processi attivi e lo stato del server.
è un programma di backup, utile a salvare una copia di un database, anche su un server differente. Se il database è composto da tabelle MyISAM oppure ARCHIVE, è possibile utilizzare un programma Perl più veloce ed efficace:
Per vedere l'elenco dei database gestiti da
Per verificare la consistenza di una tabella e correggere gli eventuali errori riscontrati, utilizzare il comando:
Per verificare la consistenza di una tabella MyISAM e correggere gli eventuali errori riscontrati, utilizzare il comando:
Nelle distribuzioni Debian di Linux ( Ubuntu inclusa ), il metapackage
Questo comando, attualmente, corrisponde al comando:
Nelle distribuzioni Debian di Linux ( Ubuntu inclusa ), il metapackage
Questo comando, attualmente, corrisponde al comando:
I parametri di configurazione da caricare per l'esecuzione di MySQL sono contenuti nei file di configurazione. Per conoscere quali sono i file di configurazione del vostro MySQL, eseguire il comando non interattivo:
All'interno dell'output di questo comando di aiuto, troverete alcune righe nelle quali vengono specificati i file di configurazione utilizzati:
I gruppi ( groups ) sono le sezioni in cui ciascun file di configurazione può essere suddiviso e rappresentano i programmi per i quali le impostazioni saranno valide:
Il file di configurazione principale è:
dove troviamo le opzioni MySQL globali:
In queste prime righe del file di configurazione, viene detto che è possibile specificare opzioni per ciascun utente, creando il file:
all'interno della directory HOME di ciascuno di essi:
I file di configurazione vengono caricati in memoria sia dal server MySQL, sia dal programma client. La gran parte dei parametri impostati nei file di configurazione possono essere recuperati con il comando:
eseguibile all'interno del client
L'operatore LIKE, in questo caso, funziona esattamente come quando viene utilizzato con il comando SELECT. A ciascuna variabile viene assegnato un valore di default. Il valore di default di una variabile può essere assegnato sia in fase di compilazione del server MySQL, sia in fase di esecuzione, attraverso l'uso delle opzioni di esecuzione, inserite nella riga di comando, sia all'interno dei file di configurazione. In molti casi, è possibile modificare il valore di una variabile, anche nel corso di una sessione MySQL, attraverso l'uso del comando SQL SET. Il comando:
elenca i valori assegnati a tutte le variabili, verificando sia i valori di default, sia i valori assegnati dai file di configurazione. Il comando:
invece, elenca i soli valori di default assegnati a tutte le variabili, ignorando i valori assegnati dai file di configurazione. Per avere un elenco delle variabili di sistema MySQL, vai alla pagina:
Per avere un elenco delle variabili utilizzabili solo dal client MySQL, vai alla pagina:
Trattandosi di funzioni amministrative, il comando deve sempre ricevere il nome utente e la modalità di accesso al server MySQL, con o senza password:
Quando la password non viene specificata sulla riga di comando, verrà richiesta da
Quest'ultimo comando modifica la password di accesso al server MySQL, per l'account connesso al server MySQL, con
Recupera il nome ed il valore di tutte le variabili di sistema presenti nel server MySQL.
Recupera il nome ed il valore di tutte le variabili di stato presenti nel server MySQL.
Svuota la cache del computer host, un'operazione vivamente consigliata nei casi in cui uno o più computer host cambiassero indirizzo IP oppure il computer host venisse bloccato dal server MySQL, in conseguenza di un numero elevato di errori di connessione.
Chiude e riapre tutti i file di log.
Ricarica in memoria le tabelle dei privilegi ( GRANT table ). E' equivalente al comando:
Le tabelle dei privilegi vengono caricate in memoria al momento dell'apertura del server MySQL (
Azzera le variabili di stato relative alla sessione corrente del corrente thread ( client ).
Chiude tutte le tabelle aperte, rimuovendo tutte le interrogazioni ( query ) presenti nella cache.
Chiude tutte le tabelle aperte e chiude e riapre tutti i file di log.
Svuota la cache dei thread. Un thread è un processo, generato da un altro processo, del quale il thread condivide lo spazio di indirizzamento, in memoria, oltre ad alcune caratteristiche, quali lo ID utente e Gruppo.
Chiude i thread, aperti sul server, con lo ID specificato. Tra un ID e l'altro non devono esserci spazi.
Verifica la presenza del server MySQL.
Stampa a video la lista dei thread attivi.
Stampa a video alcune informazioni sul server MySQL:
esprime, in numero di secondi, da quanto tempo il server MySQL server è in esecuzione;
esprime il numero di Thread ( client ) attivi;
esprime il numero di interrogazioni ( query ) inviate dal client al server MySQL, da quando il server MySQL server è in esecuzione;
esprime il numero di interrogazioni ( query ) che hanno superato il tempo di esecuzione memorizzato nella variabile
esprime il numero di tabelle aperte dal server MySQL, da quando il server MySQL server è in esecuzione;
esprime il numero delle operazioni FLUSH, REFRESH e RELOAD eseguite dal server MySQL;
esprime il numero di tabelle attualmente aperte sul server MySQL. Molte delle funzioni eseguite da
equivale al comando SQL, eseguito nell'ambiente interattivo del comando
Il comando
Altrimenti, è possibile specificare un computer ( host ) differente:
e / o un database specifico:
Una volta eseguito l'accesso al server MySQL, ci verrà presentato il prompt dei comandi:
grazie al quale sarà possibile inviare al server MySQL le query ( interrogazioni ) SQL ( statement ). Alcuni esempi:
Le query potranno essere scritte in maiuscolo o in minuscolo e potranno essere inviate anche in quantità maggiori di uno, sempre che siano separate, l'una dall'altra, da una virgola. Un punto e virgola, invece, dichiara la fine della query o la fine della sequenza di query. Grazie a questa sintassi, sarà possibile inserire anche comandi frammentati in più linee:
dove, ad ogni riga, corrisponde un "ENTER" finale. In questo esempio, abbiamo inviato al server MySQL il comando:
che elenca tutti i database presenti sul server MySQL. Se, nel corso dell'immissione di un comando multilinea, volessimo interrompere l'immisione dei dati, sarà sufficiente inserire il metacarattere
che ci riporterà immediatamente al prompt iniziale. Il comando SHOW DATABASES fa quello che dice: elenca la lista dei database gestiti dal server MySQL. Anche senza aver ancora creato alcun database utente personale, il server MySQL contiene già una serie di database che utilizza per la gestione e l'amministrazione dei database, dei privilegi di accesso, degli utenti, delle tabelle, eccetera eccetera. Per selezionare un database specifico, utilizzare lo statement SQL "USE":
Il database selezionato resterà il database di default, al quale inviare le query, almeno fino a quando non ne sarà specificato uno differente, sempre con l'uso di USE, oppure fino alla fine della sessione di lavoro. Da questo momento in poi, per poter lavorare sui singoli database, sarà necessario conoscere tutte le possibilità offerte dal linguaggio SQL, con tutti i suoi comandi ed opzioni, oltre alla struttura di un database relazionale SQL. La madre di tutte le guide, per MySQL, è MySQL 5.5 Reference Manual. Per chiudere la sessione di lavoro ed uscire dal prompt, eseguire:
Il comando
Ciascuna di queste tre opzioni chiede a
Attenzione: in questo caso, non è necessario inserire il punto e virgola di chiusura, poichè il modificatore
Questa opzione chiede a
Questa opzione chiede a
Questa opzione chiede a
Dalla modalità interattiva, è anche possibile modificare il comando da utilizzare:
e reindirizzare l'output ad un file:
Il comando selezionato come
dove l'opzione
Il comando
Dalla modalità interattiva, è anche possibile modificare il file di output:
Il comando
Per avere un indice delle sezioni relative al server MySQL, eseguire:
Per ottenere una lista degli argomenti compresi in ciascuna sezione, indicare la sezione richiesta. Per esempio:
Per ottenere la guida relativa al singolo comando, indicare il comando richiesto. Per esempio:
Il comando
Il comando
memorizzato nella directory HOME dell'utente corrente. Questo file di LOG potrebbe, quindi, contenere dati molto sensibili, compresa la password di accesso. E' possibile evitare che
non prima di aver cancellato il file di LOG stesso:
Affinchè il valore assegnato alla variabile MYSQL_HISTFILE si conservi anche per le sessioni di lavoro successive, è sufficiente scrivere il comando di assegnazione all'interno di uno dei file di startup della shell, come il file:
In alternativa al client a riga di comando che abbiamo appena visto,
Per installare
che installerà, oltre al programma
al file di configurazione:
utilizzando un qualsiasi editor di testo, quale l'editor
Per sovrascrivere il file di configurazione di Apache, sono necessari i privilegi di root.
|
||||||
I comandi Linux: MySQL | Le guide di .bit: contenuto originale |