Documento creato da Andrea ☺ www.ceccherini.net – Per informazioni : [email protected] MYSQL MySQL è un database piuttosto popolare, reso ancor più interessante da almeno due fattori: primo, la sua gratuità; secondo, il rapporto idilliaco che lo lega al linguaggio PHP, con il quale costituisce una formidabile accoppiata per lo svilluppo di siti web basati su database. Vediamo qui i passi necessari per installare MySQL sul proprio PC con sistema operativo Windows e per imparare le operazioni fondamentali di amministrazione. Installazione Il punto di partenza non può che essere, naturalmente, il sito Internet di MySQL (http://dev.mysql.com/downloads/) ; arrivati sulla home page clicchiamo su downloads e poi su mirrors; nella pagina così raggiunta abbiamo a disposizione l'elenco di tutti i server da cui è possibile scaricare MySQL; non dobbiamo far altro che scegliere un FTP geograficamente vicino a noi ed entrare nella directory /mysql/Win32. Una volta terminato il download del file, provvediamo a scompattarlo (ad esempio, usando WinZip) ed eseguiamo poi il consueto setup.exe. L'installazione non presenta problemi di sorta, basta scegliere la directory sul nostro disco fisso in cui installare il software e seguire la procedura guidata (se si è poco esperti, si consiglia di optare per l'installazione tipica). A questo punto, MySQL è installato sul nostro PC; possiamo passare ad occuparci della "messa in opera". Operazioni fondamentali All'interno della directory in cui abbiamo installato MySQL troveremo una sottodirectory, \bin, contenente gli eseguibili sia del server vero e proprio, sia di alcuni client di amministrazione e di utilità. Avviare MySQL Per avviare il server MySQL basta lanciare il Servizio Mysql presente (aggiunto) tra i servizi di sistema. Creazione di un DATABASE MySQL Sulle piattaforma ENSIM LINUX, Mysql può essere gestito direttamente dall’utente tramite il pannello di controllo. Sulle piattaforme Windows il database deve invece essere creato precedentemente dall’amministratore del server o l’utente non sarà in grado di lavorarci. Per poterlo creare, l’amministratore ha bisogno di un nome e una password; queste possono essere fornite dall’utente oppure scelte direttamente dall’ admin. Si preferisce comunque il primo caso. Se siamo costretti al secondo si usano quelle delle FTP. Il Dbase deve essere creato da linea di comando xchè MySql non ha un interfaccia grafica di amministrazione. Bisogna quindi utilizzare un prompt di MS-DOS e raggiungere la cartella “c:\mysql\bin” ( o dove abbiamo installato il tutto). Una volta in c:\mysql\bin dobbiamo inizializzare il Dbase con questo comando : mysqladmin create <nome database> se questo comando dovesse essere respinto con una dicitura del tipo “..access denied for user…localhost…ecc.” può voler dire che è stata modificata la password di root. La sintassi per l’inizializzazione diventa allora di questo tipo : mysqladmin –u root –p create <nome database> a seguito di questa sintassi sarà richiesta la password di root e il dbase verrà creato vuoto. Gestione UTENTE di un DATABASE MySQL A questo punto dobbiamo attribuire al database vuoto un utente e una password di amministrazione. Per fare ciò dobbiamo entrare nella consolle di gestione di Mysql con il seguente comando, sempre digitato nella cartella “c:\mysql\bin”: mysql se questo comando dovesse essere respinto con una dicitura del tipo “..access denied for user…localhost…ecc.” può voler dire che è stata modificata, come prima, la password di root. La sintassi per la gestione diventa allora di questo tipo : mysql –u root –p con questo comando verremo proiettati in una consolle di gestione a questo punto dobbiamo definire utente e password in questo modo : GRANT ALL PRIVILEGES ON <nome database>.* TO ‘<NOME UTENTE>’@’%’ IDENTIFIED BY ‘<PASSWORD>’; se la dicitura è stata scritta bene, Mysql deve rendere un messaggio del tipo “OK, 0 query, 0 rows affected” o qualcosa di simile. Eventuali errori verranno invece segnalati. Attenzione particolare agli apici. ESPORTAZIONE di un DATABASE MySQL Per l’esportazione da riga di comando si usa il comando MYSQLDUMP come in esempi riportati di seguito: Esempio: mysqldump -u root nomeDB > pippo.sql (dove pippo.sql è il nome del file sql) Molto importante è anche l'opzione --databases per inserire nel file anche le istruzioni di creazione del DB altrimenti fai il dump solo delle tabelle. mysqldump -u root --databases nomeDB > pippo.sql IMPOSTAZIONE DI UN SISTEMA MySQL E QUALCHE PRIMO PASSO Personalmente suggerirei di non approfondire in questa sezione…..xchè si possono fare discreti casini (specie se si cambia la password di ROOT e poi ci se la scorda!). Per chi fosse abituato ad Access il concetto di utenti e password può risultare nuovo. In MySQL possiamo creare un numero infinito di utenti con le loro password e i loro "diritti" sui vari database. Per accedervi la prima volta abbiamo un nome utente di default, "root", definizione tanto caro a chi conosce Linux. La password è inizialmente vuota. Si può assegnare una password di propria scelta, con il seguente comando: c:\mysql\bin\mysqladmin -u root password <lapassword> In questo caso "root" ora avrà come password quella specificata. Se vogliamo modificare in seguito questa password dovremo scrivere questo comando: c:\mysql\bin\mysqladmin -u root -p password nuovapassword Dopo l'enter sarà chiesta la vecchia password utilizzata da "root", una volta digitata e dopo aver premuto nuovamente enter, a "root" sarà assegnata la nuova password immessa. Entriamo nella shell dei comandi di MySQL. A differenza di Access che ha una comoda interfaccia grafica per la sua gestione, MySQL ha solo una shell, scomoda a dire il vero, dove digitare i vari comandi. Vedremo in seguito come risolvere questo problema con strumenti esterni, ma per adesso cerchiamo di utilizzare direttamente i comandi. Con una finestra Dos in Windows 98 o con la finestra di Prompt dei comandi in NT/2000, avviamo la shell con il comando, ugale per la versione shareware, completa o beta: c:\mysql\bin\mysql –u root –p <password> Otterremo questa risposta: Per uscire è sufficiente scrivere: quit; Adesso possiamo digitare i comandi direttamente. Iniziamo a vedere i database presenti, scrivendo: show databases; ricordandoci il punto e virgola obbligatorio nella console di MySQL, otterremo: Naturalmente questo è solo un esempio dei database presenti sul mio computer. Per selezionare su quale database lavorare, utilizziamo il comando "use": use andrea; quindi, per vedere le tabelle presenti in questo database: show tables; In questo caso sono presenti due tabelle, "altro" e "andrea". Adesso possiamo digitare i comandi SQL a noi noti per visualizzare, aggiungere, modificare e cancellare record: Select * from altro; comandi che chi ha già dimestichezza anche con Access e ASP conosce perfettamente. Ma se volessimo costruire una nuova tabella o un nuovo database, come ci dovremo comportare? In Access siamo abituati a utilizzare comode griglie con opzioni selezionabili con il mouse, ma con MySQL dovremo utilizzare sempre sequenze di comandi. Per creare un nuovo database scriviamo: create database prova; In questo modo, visualizzando la lista dei database presenti, troveremo ora un nuovo database di nome "prova". Per lavorare ora su questo database usiamo il comando che già abbiamo imparato ad usare: use prova; Adesso impariamo a creare una tabella semplicissima contenente i campi "nome", "email","eta": CREATE TABLE utenti( id int(3) not null auto_increment, Nome char(30), Email chr(30), Eta int(3), Primary key(id)); Nella prima riga diciamo a MySQL di creare una tabella di nome "utenti", nella seconda diamo il nome del primo campo "id" che sarà numerico, al quale abbiamo aggiunto che non può contenere valore nullo e che si auto-incrementrà ad ogni record aggiunto. Le tre linee successive creano i campi che ci serviranno, mentre l'ultima imposterà "id" come PRIMARY KEY, cioè chiave univoca dei vari record del database. Per la visione di tutti i tipi di campi in MySQL rimando al paragrafo successivo dove darò una breve panoramica. Ora che sappiamo come creare un database e le relative tabelle, è necessario sapere come modificarne la struttura, come cancellarle, come aggiungere campi, ecc. Nel nostro caso vogliamo modificare il campo "nome" in "name" e modificarne il tipo in "text": change nome name text; Se vogliamo aggiungere il campo paese useremo: add paese char(20); Se vogliamo assegnare l'indice alla nostra tabella o vogliamo aggiungerne un altro: add index(id); Ma se vogliamo cancellare la tabella "utenti", invece: drop table utenti; E per cancellare tutto il database, nel nostro caso "prova" useremo: drop database prova; Per una maggior descrizione dei vari comandi vi invito a leggere la documentazione che troverete sul sito: www.mysql.com TIPI DI CAMPI UTILIZZABILI MySQL mette a disposizione una ricca scelta di tipi di campi per le nostre tabelle, più numerosi di Access. TINYINT - Valore numerico compreso tra -128 e 127. TINYINT UNSIGNED - Valore numerico compreso tra 0 e 255. SMALLINT - Valore numerico compreso tra -32768 e 32767. SMALLINT UNSIGNED - Valore numerico compreso tra 0 e 65535. MEDIUM - Valore numerico compreso tra -8388608 e 8388607. MEDIUM UNSIGNED - Valore numerico compreso tra 0 e 16777215. INT o INTEGER - Valore numerico compreso tra -2147483648 e 2147483647. INT UNSIGNED - Valore numerico compreso tra 0 e 4294967295. BIGINT - Valore numerico compreso tra -9223372036854775808 e 9223372036854775807. BIGINT UNSIGNED - Valore numerico compreso tra 0 e 18446744073709551615. FLOAT (m,d) - Valore numerico con valori decimali. Compreso tra -3.402823466E+38 e -1.175494351E38. DOUBLE(m,d) o REAL(m,d) - Valore numerico con valori decimali. Compreso tra 1.7976931348623157E+308 e -2.2250738585072014E-308. DECIMAL (m,d) o NUMERIC(m,d) - Valore numerico con decimali che sarà memorizzato come una serie di caratteri. DATE - Campo contenente una data in formato "aaaa-mm-gg". DATETIME - Campo contenente la data e ora, informato "aaaa-mm-gg hh:mm:ss". TIME - Campo contente un'ora nel formato: "hh:mm:ss". CHAR - Campo contenente una stringa di caratteri che può avere la massina lughezza di 255. TINYBLOB o TINYTEXT - Campo che può avere la massima lunghezza di 255 in formato binario nel primo caso o testo nel secondo. BLOB o TEXT - Campo che può avere la massima lunghezza di 65535 in formato binario nel primo caso o testo nel secondo. MEDIUMBLOB o MEDIUMTEXT - Campo che può avere la massima lunghezza di 16777215 in formato binario nel primo caso o testo nel secondo. LONGBLOB o LONGTEXT - Campo che può avere la massima lunghezza di 4294967295 in formato binario nel primo caso o testo nel secondo. ENUM ('value1','value2',.) - Campo che può contenere uno dei valori presente tra le parentesi.