PHP E MYSQL LEOPARD, COME ATTIVARE UN SERVER WEB COMPLETO CON MAC OS X.5 (LEOPARD)

Pagina creata da Valentina Venturini
 
CONTINUA A LEGGERE
PHP E MYSQL LEOPARD, COME ATTIVARE UN SERVER WEB COMPLETO CON MAC OS X.5 (LEOPARD)
Tutorial n. 002           Leopard, PHP e MySQL           vers.1.1 - 09//2009

                               Tutorial n. 002
                        (versione 1.1 / sttembre 2009)

                         Leopard,
                           PHP
                            e
                          MySQL

                  Come attivare un server web completo
                       con Mac OS X.5 (Leopard)

                           http://www.inerziasoft.eu

InerziaSoft.eu                 pag. 1 / 27
PHP E MYSQL LEOPARD, COME ATTIVARE UN SERVER WEB COMPLETO CON MAC OS X.5 (LEOPARD)
Tutorial n. 002                               Leopard, PHP e MySQL                                            vers.1.1 - 09//2009

Indice
     Storico revisioni.............................................................................3

     Licenza e altro ............................................................................... 3

     Marchi............................................................................................. 3

     Note ................................................................................................. 3

     Attivare Apache ............................................................................. 4

     Attivazione del PHP ....................................................................... 5

     Installare MySQL............................................................................ 9
        CMS.................................................................................................... 13

        Amministrazione di MySQL..............................................................13

     Interfacce utente per MySQL.......................................................15
        phpMyAdmin..................................................................................... 16

        Installazione...................................................................................... 17

        Sequel Pro......................................................................................... 20

        MySQL Tools ..................................................................................... 20

        Navicat Lite ........................................................................................ 21

     Riassunto ..................................................................................... 21

     Appendice A: Backup .................................................................. 23

     Appendice B: Il Terminale ........................................................... 25

InerziaSoft.eu                                         pag. 2 / 27
PHP E MYSQL LEOPARD, COME ATTIVARE UN SERVER WEB COMPLETO CON MAC OS X.5 (LEOPARD)
Tutorial n. 002                   Leopard, PHP e MySQL                         vers.1.1 - 09//2009

Storico revisioni
  rev                data                                 sezioni

   1.0            Aprile 2009   tutte

   1.1       Settembre 2009     notizie aggiuntive sui software di gestione MySQL
                                alcuni esempi dʼuso di MySQL

Licenza e altro
Questo tutorial deve essere considerato come freeware: potete cioé scaricarlo ed
utilizzarlo senza che nulla mi sia dovuto. Siete incoraggiati a distribuire questo documento
in formato pdf e potete inoltre inserirlo in altri download, sempre che non venga fatto
pagare alcunché allʼutente finale. In cambio, chiedo di lasciare inalterati i riferimenti al
nostro sito (inerziasoft.eu) e di citare la fonte.
Il contenuto è stato rivisto e molti errori sono stati eliminati; non posso però affermare che
non ce ne siano altri, per cui non posso essere ritenuto responsabile di eventuali perdite di
dati conseguenti alle azioni indicate in questo tutorial. Posso solo dire che tutta la
sequenza di azioni è stata da me effettuata ed è documentata dalle figure prese
direttamente dal vivo.
Se ritenete che questo tutorial possa avere un certo valore e non sapete come sdebitarvi...
la soluzione è semplice: fate una piccola donazione, usando il link che trovate sul sito
www.inerziasoft.eu alla sezione download!
Se avete trovato un errore, o per altre segnalazioni, vi prego di contattarci allʼindirizzo
info@inerziasoft.eu

Marchi
Apache, PHP, MySQL ed altri marchi indicati in questo tutorial sono proprietà dei rispettivi
produttori.

Note
I percorsi ed i nomi di file e cartelle sono riportati in carattere mono-spaziato, mentre i
comandi da terminale sono anche evidenziati con il colore verde su fondo nero, in
omaggio ai vecchissimi terminali di tempo fa. I riferimenti a comandi da menu sono indicati
in grassetto corsivo; come al solito, i punti (...) al termine di un menu indicano che verrà
aperta una finestra di dialogo.
In questo tutorial capiterà spesso di dover indicare i percorsi di cartelle nel sistema e nella
home dellʼutente; avrete certamente notato che alcune cartelle mostrano un nome italiano
(o, come si dice, nazionalizzato). Libreria, Applicazioni, Documenti, ecc... Questi nomi
sono prodotti dal Finder per completare la nazionalizzazione: una facilitazione in più per
lʼutente normale, ma dobbiamo tenerne conto se vogliamo entrare nel cuore del Mac. In
realtà tali cartelle hanno nomi inglesi e noi dobbiamo usare questi quando diamo comandi
nel Terminale. Quindi, se stiamo usando il Terminale i nomi saranno Applications,

InerziaSoft.eu                          pag. 3 / 27
Tutorial n. 002                   Leopard, PHP e MySQL                           vers.1.1 - 09//2009

Documents,    Library, ecc... mentre quando           siamo nel Finder dovremo cercare
Applicazioni, Documenti, Libreria, ecc...

In questo tutorial capiterà di usare entrambe le codifiche: sarà semplice capire in che caso
ci troviamo; se qualcosa non torna con i nomi italiani, provate ad usare quelli inglesi e
viceversa!
Inoltre, spesso in questo tutorial avremo bisogno di accedere a cartelle del sistema Unix
che fa da base a Mac OSX, che di solito sono invisibili. Per arrivare a queste cartelle
possiamo usare il comando menu del Finder Vai→Vai alla cartella... (con scorciatoia da
tastiera Cmd-Shift-G), scrivere il percorso e cliccare Vai: si aprirà una finestra del Finder
sulla cartella cercata.
Quando invece dovremo aprire uno di questi file, lo trascineremo sul nostro editor di testi
preferito; facciamo però attenzione: lʼeditor scelto non deve introdurre formattazioni al
testo o caratteri diversi dal testo. TextEdit può andar bene, ma io consiglio TextWrangler,
la versione free di BBEdit, perché permette un ottimo controllo di cosa si salva. Inoltre,
tramite il comando File→Open Hidden... è facile aprire anche i file normalmente nascosti.

Attivare Apache
                    Su Leopard arriva installata la versione 2 del server HTTP Open
                    Source. Come con Tiger, l'attivazione è semplicissima: Preferenze di
                    Sistema, click su Condivisione e nella lista dei servizi...

facciamo click su Condivisione Web (potrebbe venirvi chiesta la password di
amministratore):

Lʼeffetto lo vediamo sulla destra della lista, con lʼaccensione del led verde:

InerziaSoft.eu                          pag. 4 / 27
Tutorial n. 002                    Leopard, PHP e MySQL                         vers.1.1 - 09//2009

A fianco della lista sono riportati gli URL ai quali occorre puntare il browser per accedere
da un altro computer ai siti su questo Mac. I corrispondenti URL sono disponibili anche
come localhost: allʼindirizzo
http://localhost/

troveremo il sito del nostro sistema, mentre allʼindirizzo
http://localhost/~nomeUtente

vedremo la pagina di inizio di quell'utente. Potremmo anche cliccare direttamente sugli
indirizzi indicati in Preferenze di Sistema. Se cliccando su tali indirizzi compare un
messaggio di errore (forbidden), verificate che sia presente il file
/etc/apache2/users/nomeutente.conf

(al posto di nomeUtente mettete il nome del vostro utente); tale file di configurazione è pre-
installato nelle ultime versioni di Leopard ma non nelle prime. Se questo file non esiste,
aprite un nuovo file in TextWrangler, scrivete attentamente le seguenti righe (sostituite il
vostro nome utente al posto di nomeUtente:

      Options Indexes MultiViews
        AllowOverride None
        Order allow,deny
      Allow from all

e salvatelo, appunto nella cartella indicata. Tale file di configurazione indica ad Apache di
considerare tale cartella come sito web con opzioni di default.
Con Apache siamo a posto: le impostazioni di default andranno bene per la maggior parte
degli usi, per cui non dobbiamo fare altro. Il percorso dove andare a costruire il sito del
computer (quello raggiungibile con il primo URL) è:
/Library/WebServer/Documents/

mentre il sito di un utente è posizionato nella cartella Siti (che in realtà si chiama Sites):
/Users/nomeUtente/Sites/

Se siete solo interessati a costruire un sito non dinamico, per esempio usando iWeb, avete
a disposizione quello che può servire. Se invece siete interessati a siti dinamici, che
possono presentarsi in modo diverso in funzione delle condizioni, allora avete bisogno di
un linguaggio di script lato server: al momento della richiesta della pagina, il server elabora
lo script e spedisce la pagina risultante al browser dellʼutente. Uno di questi linguaggi di
script, interpretato al momento della richiesta, è il PHP.

Attivazione del PHP
                         Se è acceso, spegnamo Apache andando nelle preferenze di
                         sistema, come indicato in precedenza. Rispetto a Tiger (Mac OS
                         X.4), il file di configurazione di Apache si trova nella cartella:
                         private/etc/apache2/httpd.conf

                         (mentre con Tiger era in /private/etc/httpd/httpd.conf). Dato

InerziaSoft.eu                           pag. 5 / 27
Tutorial n. 002                    Leopard, PHP e MySQL                          vers.1.1 - 09//2009

che /etc è un link, lo troviamo anche in /etc/apache2/httpd.conf.
Apriamolo con TextWrangler, che permette di vedere e aprire i file nascosti (Open
hidden...) e digitando Cmd-F, facciamo una ricerca per trovare la riga che contiene
LoadModule php5:

LoadModule php5_module         libexec/apache2/libphp5.so

La riga è commentata, cioé con il simbolo ʻ#ʼ ad inizio riga, per cui finora non veniva
considerata; togliamo tale simbolo, in modo che Apache esegua il comando allʼavvio.
Diversamente da Tiger, su Leopard non cʼè bisogno di definire i tipi MIME per il php,
poiché sono già pronti: infatti se andiamo allʼultima riga del file di configurazione, troviamo
Include /private/etc/apache2/other/*.conf

Infatti, se diamo unʼocchiata in questa cartella, troveremo il file php5.conf dove nelle prime
righe vengono associate le estensioni .php e .phps al modulo PHP; in questo modo,
quando Apache viene chiamato a servire via web una certa cartella, andrà a cercare non
solo i file html o htm, ma anche i file con estensione .php e .phps.
Per conoscenza (ci servirà dopo), cerchiamo (sempre utilizzando la finestra di ricerca,
richiamata con Cmd-F) la riga con lʼistruzione
DocumentRoot "/Library/WebServer/Documents"

DocumentRoot è la directory radice, quella dove Apache cerca di default il sito web
quando riceve una richiesta http col nome/indirizzo IP del computer. Volendo, possiamo
anche dare unʼocchiata agli altri parametri: il file è molto ben commentato, anche se in
inglese; badiamo però a non cambiare nulla, almeno per adesso. Per esempio, verso la
fine possiamo trovare una linea commentata:
# Include /private/etc/apache2/extra/httpd-vhosts.conf

Se dovessimo sviluppare più siti contenuti in locazioni diverse sullʼhard disk, dovremmo
togliere il commento anche a questa riga, per attivare i Virtual Host. cioé computer virtuali
contenenti siti web. Sul Mac questo è necessario solo se volessimo appunto usare
locazioni web non inserite nella cartella Siti (Sites) del nostro utente; infatti, tale cartella è
già abilitata. Per confermarlo, notiamo che nel nostro http.conf, che non abbiamo ancora
chiuso, possiamo trovare poco più sopra al comando appena visto, il comando attivo (non
commentato)
Include /private/etc/apache2/extra/httpd-userdir.conf

Aprendo questo file, troveremo al suo interno i due comandi
UserDir Sites
Include /private/etc/apache2/users/*.conf

Il primo dice ad Apache di considerare la cartella Sites di ogni utente come autorizzata a
contenuti web, mentre il secondo gli dice di prevedere i permessi di accesso a tali cartelle
come descritto nel file nomeUtente.conf; in questo modo viene permesso lʼaccesso web
alla sola cartella Siti di ogni utente, anche se la richiesta arriva dalla rete. Giusto per
chiudere il giro, apriamo anche il file indicato relativo allʼutente
/private/etc/apache2/users/nomeUtente.conf

dove troviamo lʼindicazione strutturata xml:

     Options Indexes MultiViews

InerziaSoft.eu                           pag. 6 / 27
Tutorial n. 002                    Leopard, PHP e MySQL                        vers.1.1 - 09//2009

     AllowOverride None
     Order allow,deny
    Allow from all

che sono proprio identici a quelli relativi alla cartella principale indicata nella DocumentRoot
(li troviamo attorno alla riga 177 di httpd.conf). In altre parole, quando avviamo Apache2,
questo considera come corrette e identiche le richieste di fornire contenuti web sia dalla
DocumentRoot che dalla cartelle Siti di ogni utente. I permessi di default sono molto
restrittivi, ma per i nostri scopi vanno benissimo.
Notiamo ancora una volta che nel file, come anche nei comandi da Terminale, le cartelle
appaiono con il loro nome originale, non tradotto.
Ora chiudiamo tutti i file che abbiamo aperto, controllando che lʼunico che ci chiede di
essere salvato sia il primo (httpd.conf); se lo chiedesse anche un altro, vuol dire che
inavvertitamente abbiamo cambiato qualcosa: rispondiamo quindi Sì solo a httpd.conf. Il
salvataggio di questo file potrebbe chiederci la password di amministratore: infatti stiamo
toccando un file dellʼutente root (che consiglio di non attivare: se non sapete come si fa,
meglio! Si tratta di un utente con molti privilegi, ma anche pericoloso per la sicurezza,
anche se il nostro Mac non è direttamente collegato a internet).
Ora dobbiamo riavviare Apache, per cui torniamo nelle Preferenze di Sistema e togliamo
il check a Condivisione Web: attendiamo che sulla destra compaia “Condivisione Web:
disattiva” e poi clicchiamo nuovamente sul check box per riattivarla. Durante le operazioni
potrebbe esserci richiesta password di amministratore. La conferma che tutto è andato
bene è nella solita “spia” verde a destra.
Per quelli di voi più audaci, dirò che la stessa operazione può essere fatta da Terminale
(dentro la cartella Applicazioni→Utility), scrivendo il comando
sudo apachectl start

dove abbiamo usato sudo per dare il comando con privilegi di amministratore (super user
do); ci verrà chiesta la password. Se dovessimo fermarlo, bisogna sostituire start con
stop e se dovessimo fermarlo e riavviarlo, basterebbe usare restart. Semplice, no? Ad
ogni modo, se non siete sicuri nellʼuso del Terminale, lʼutilizzo delle Preferenze di
Sistema ha lo stesso effetto.
Ora possiamo controllare che tutto sia a posto; prima di tutto, controlliamo che Apache sia
attivo, aprendo Safari e scrivendo lʼindirizzo del web server interno:
http://localhost
Si aprirà la pagina di default del sito principale:

InerziaSoft.eu                           pag. 7 / 27
Tutorial n. 002                   Leopard, PHP e MySQL                         vers.1.1 - 09//2009

Questo ci fa capire che Apache è attivo e ci sta mostrando la pagina già pronta, che si
trova nella cartella /Libreria/WebServer/Documents (cioé, proprio la DocumentRoot - si
tratta della Libreria del sistema, non di quella utente).
Nelle precedenti operazioni abbiamo anche agito per attivare il PHP: sempre usando
TextWrangler, creiamo un nuovo file in cui inseriremo una sola riga:

(niente spazi tra ʻʼ) e poi salveremo, con molta fantasia, con il nome
info.php nella cartella

/Library/WebServer/Documents/

che è quella indicata come DocumentRoot nel file di configurazione di Apache; andiamo
cioè a posizionare il file proprio nella posizione che Apache considera come localhost.
Notiamo che in questa cartella esistono molti altri file: sono quelli necessari per la
presentazione della pagina che abbiamo appena visto; a dir la verità, noi ne abbiamo
usato solo uno: quello in italiano (o comunque nella lingua del sistema operativo). Se
pensiamo in seguito di costruire un sito in questa posizione, può essere una buona idea
creare una cartella (p.es. chiamandola ʻvecchioSitoʼ) in cui mettere tutti questi file: da quel
momento, il sito di default non funzionerà più, ma potremmo sempre ripristinarlo,
riportando i file nella loro posizione originale.
Nel momento del salvataggio, è bene abituarsi a controllare che TextWrangler stia
salvando il file con i caratteri di fine linea di Unix, cliccando sul pulsante Option della
finestra di salvataggio; al momento non è importante, ma potrebbe diventarlo in seguito.
Per verificare lʼattivazione del modulo PHP, scriviamo in Safari lʼindirizzo
http://localhost/info.php
Se tutto è a posto, si aprirà la pagina di informazioni del PHP, simile a questa, dove ho
riportato solo le prime righe:

InerziaSoft.eu                          pag. 8 / 27
Tutorial n. 002                   Leopard, PHP e MySQL                         vers.1.1 - 09//2009

Abbiamo quindi attivo Apache con il PHP: se conosciamo il linguaggio PHP, possiamo già
scrivere qualche pagina, anche se non avendo un database, dovremo portarci dietro
variabili di sessione e la cosa può diventare faticosa. Tuttavia, se volete prendere
dimistichezza con questo linguaggio di script, potete fermarvi qui e divertirvi a costruire
pagine dinamiche.
Tuttavia dopo breve tempo, scoprirete che un database diventa necessario per siti più
avanzati; passiamo allora al passo successivo: lʼinstallazione di MySQL.
Però, prima di proseguire, qualche annotazione sulla sicurezza: se il nostro Mac è
collegato in rete con la condivisione web attivata, tutto quello che andremo a mettere nella
cartella
/Libreria/WebServer/Documents/
sarà disponibile sul web una volta che il vostro Mac sia raggiungibile dallʼesterno: non
metteteci nulla di importante se non conoscete le tecniche apposite per proteggerlo.
Tuttavia, le cose non sono così semplici: non è immediato mettere a disposizione della
rete il nostro sito web.
Se infatti siamo in una rete locale (router NAT), lʼindirizzo visibile dallʼesterno non è quello
indicato nelle Preferenze di Sistema; in più, tale indirizzo cambia ad ogni sessione e
comunque dopo un certo periodo di tempo, a meno che non acquistiamo un indirizzo
statico dal nostro provider.
Diciamo pure che il modo migliore per rendere visibile il nostro sito è di affittare uno spazio
web da uno dei molti ISP; in questo modo avremmo anche una protezione adeguata per i
nostri dati.
In questo caso, useremo il nostro Mac con Apache, PHP e MySQL come base per lo
sviluppo, trasferendo poi il tutto sul server remoto dopo aver fatto con comodità tutte le
prove necessarie; va da sé che dovremo scegliere un hosting Linux, che sarà
praticamente uguale allʼarchitettura del nostro Mac.
Passiamo quindi allʼultimo tassello, il database.

                       Installare MySQL
                       Gratuito, creato da Sun, con possibilità di versione a pagamento. Si
                       trova già pronto sulle versioni Server di Mac OSX, mentre sulla
                       versione standard deve essere installato.
Scaricare la corretta versione di MySQL dal sito http://dev.mysql.com/downloads.

InerziaSoft.eu                          pag. 9 / 27
Tutorial n. 002                   Leopard, PHP e MySQL                        vers.1.1 - 09//2009

Scegliete il Package Format, versione per Mac OS X 10.5 (x86_32) (potremmo anche
usare la versione a 32 bit, anche se per il momento non la sfrutteremmo: bisogna
attendere Snow Leopard!); attualmente la versione è la 5.1.36, di circa 63 MB.
Una volta cliccato sul download che vogliamo, compare una pagina in cui è riportato il file
che stiamo per scaricare e la richiesta di registrarsi; a voi decidere se farlo o meno: il
download potrà comunque essere effettuato. Il vantaggio nel registrarsi sta nel poter
ricevere notizie di aggiornamenti, inviti a seminari web gratuiti, ecc... In altre parole, se
volete solo provare MySQL, potete saltare la registrazione. Se invece contate di
proseguire nella conoscenza, allora può essere conveniente. Vi posso assicurare che non
vi arriverà spam (per lo meno, a me non è successo).
Se decidete per il no, il link per il download è quasi nascosto in una scritta a fondo pagina.
Nella schermata successiva scegliete un mirror (preferite quello italiano) e vi troverete il
file cercato nella cartella di Download.
Lʼinstallazione è semplicissima (se per qualche motivo avevate già installato MySQL,
fermate il server prima di partire):
• doppio click sul file dmg appena scaricato e doppio click sullʼicona del disco;
• doppio click sul pacchetto di installazione con lo stesso nome del file scaricato
  (mysql-5.1.36... ecc ecc) e si avvia lʼinstallazione nel modo tipico di MacOS; su alcune
  versioni precedenti di OSX, poteva comparire un messaggio di errore (You cannot install
  on this disk): se vi capita tornate indietro e ricominciate: si deve installare regolarmente.
• quando necessario scegliete lʼhard su cui installare (se non ci dovesse essere lo spazio
  necessario sarete avvisati);
• se tutto è a posto, otterremo il normale messaggio al termine dellʼinstallazione:

InerziaSoft.eu                         pag. 10 / 27
Tutorial n. 002                   Leopard, PHP e MySQL                       vers.1.1 - 09//2009

Lʼinstallazione viene posta nella cartella
/usr/local/mysql-versione

(con lʼattuale versione il nome è mysql-5.1.36-osx10.5-x86_32); inoltre, per evitare
problemi negli aggiornamenti, viene anche creato nella stessa cartella /usr/local un link a
tale cartella con il nome mysql. Se per caso una cartella con lo stesso nome esiste già,
viene rinominata a /usr/local/mysql.bak.
Allʼinterno, nella cartella /usr/local/mysql/docs sono contenuti i file di informazione,
mentre tutti gli eseguibili sono in /usr/local/mysql/bin. MySQL richiede per il
funzionamento che sia attivo un utente ʻmysqlʼ, di cui però non dobbiamo preoccuparci in
quanto OS X arriva con questo utente già definito.
Se vogliamo che il server MySQL sia attivato alla partenza di OS X, dobbiamo anche
installare il pacchetto MySQLStartupItem.pkg, presente nel disco di installazione: doppio
click e verrà installato (fatto una volta, non servirà ripeterlo) e per farlo ci verrà chiesta
nuovamente la password di amministratore; la posizione di installazione è:
/Library/StartupItems/MySQLCOM

Ormai sappiamo come raggiungere le cartelle nascoste: ci vuole poco a verificare
lʼavvenuta installazione di questo elemento. Non dimentichiamo anche di copiare il file
MySQL.prefPane nella cartella delle Preferenze di Sistema:
/Library/PreferencesPanes

anche qui ci verrà richiesta la password di amministratore.
A questo punto occupiamoci del socket, che serve a effettuare il collegamento con PHP;
fino a poco tempo fa, MySQL installava normalmente il socket in
/tmp/mysql.sock

Purtroppo Apache di Leopard andava a cercarlo in una nuova posizione:
/var/mysql

Questo costringeva a fare un poʼ di equilibrismi al Terminale, con spostamento di file
oppure generazione di link: basta fare una ricerca sulla rete per trovare molte soluzioni più
o meno corrette. Per lo stesso motivo, il pannello MySQL non funzionava ed il database
doveva essere fatto partire da Terminale con il comando
sudo /usr/local/mysql/support-files/mysql.server start

e con lʼequivalente con stop per fermarlo. Sono proliferati i piccoli software che
sostituivano il pannello non funzionante (anche InerziaSoft aveva contribuito con il widget,
InerziaMySQL, che trovate ancora nella sezione di download del sito).
Poi il problema del socket fu risolto: lʼinstaller di MySQL andava a mettere nel posto giusto
il file così importante, però quello che permetteva la partenza automatica del server
                   MySQL allʼavvio del sistema non era installato correttamente; per cui
                   doveva essere copiato a mano negli StartupItems.
                  Per fortuna, nellʼultimo download effettuato tutto è finalmente a posto: il
                  socket è inserito nella cartella /tmp/ e Apache lo va a cercare proprio lì!
                  Per cui lʼinstallazione è ora corretta e funzionante: per verificarlo
                  entriamo nelle Preferenze di Sistema e clicchiamo sul pannello MySQL,
                  la cui icona è mostrata qui a fianco, che si aprirà, mostrandoci lo stato
del server:

InerziaSoft.eu                         pag. 11 / 27
Tutorial n. 002                   Leopard, PHP e MySQL                      vers.1.1 - 09//2009

Avendolo appena installato, è ovviamente fermo. È sufficiente cliccare sul pulsante Start
per ottenere lʼavvio, indicato da un ovvia ma quasi illeggibile scritta verde:

Non dimentichiamo di verificare che il check box sottostante sia abilitato, in modo che il
server si attivi allo startup del sistema:

Giusto per conoscenza, possiamo anche controllare che il processo sia effettivamente
attivo, facendo partire Monitoraggio Attività (nella cartella Utility), selezionando dal menu
a tendina “Tutti i processi” e scrivendo sql nella casella del filtro:

Vedete attivo il processo mysqld, di cui lʼutente _mysql è proprietario.
Volendo, per esercizio, è sempre possibile avviare e fermare il server via Terminale, ma
non è più necessario.
Tuttavia il widget InerziaMySQL può ancora essere utile: dopo tutto è più semplice
passare alla Dashboard che aprire le Preferenze di Sistema, cliccare sul pannello e fare
un altro click sul pulsante di comando... :-)

InerziaSoft.eu                         pag. 12 / 27
Tutorial n. 002                  Leopard, PHP e MySQL                        vers.1.1 - 09//2009

CMS
MySQL è ora attivo e possiamo utilizzarlo. Attenzione però che alcuni CMS basati su PHP
e MySQL non sono stati aggiornati in modo da poter lavorare su Leopard. Il problema è
sempre lo stesso: il file di sock.
Se quindi abbiamo scaricato il nostro CMS preferito e, dopo averlo copiato nella cartella
Siti del nostro utente (o nel sito generale del nostro Mac), troviamo che non funziona, cʼè
una buona probabilità che stia andando a cercare il file di socket nella vecchia posizione.
Dobbiamo allora trovare dove è stato messo il file di socket e cambiare lʼindirizzo, in modo
che punti al posto giusto; di solito si tratta di modificare un file di configurazione. Fatto
questo, il CMS dovrebbe tornare a funzionare. Dato che tutto è tornato normale, può
anche darsi che non troveremo nessun problema!

Amministrazione di MySQL
Cominciamo con una nota di sicurezza: finché usiamo il nostro Mac solo per sviluppare il
sito, per scaricare il tutto in ftp sul server di hosting, possiamo lasciare il database senza
password. Ma se pensiamo di poterci connettere alla rete, allora sarà bene introdurre una
buona password: seguiamo le solite regole, che dicono di usare almeno 8 caratteri, meglio
se di più, non utilizzare una frase di senso compiuto, inserire sia lettere maiuscole e
minuscole, che numeri: sempre bene non correre rischi, visto che cʼè gente che non ha
altro da fare che tentare di danneggiare i computer altrui...
Per il resto, dobbiamo soltanto notare che è bene non inserire punti nel nome di un
database.
Ora che abbiamo attivo il nostro bravo database, possiamo giocarci un poʼ tramite il
Terminale: basta aprire una finestra di Terminale e scrivere
sudo /usr/local/mysql/bin/mysql

(oppure dopo sudo fare un drag&drop del file mysql della cartella bin) e dando return
riceveremo il messaggio di benvenuto:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 558
Server version: 5.1.31 MySQL Community Server (GPL)

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql>
ed il cursore lampeggia sullʼultimo prompt, in attesa di un nostro comando. Siamo nello
spazio mysql, per cui saranno riconosciuti solo i suoi comandi. Come esempio, chiediamo
aiuto: cioé scriviamo
help
seguito da return, oppure \h (abbreviazione del comando). Otterremo la lista di tutti i
comandi, oltre a ricordarci che tali comandi devono essere i primi caratteri sulla linea e che
le varie istruzioni vanno terminate da ʻ;ʼ. Se vi dimenticate il carattere punto-e-virgola,
dando il return ci verrà risposto con una freccia ʻ->ʼ, permettendo di continuare il comando
come fosse sulla stessa riga. Se scriviamo
help contents
otteniamo i capitoli dellʼaiuto; per esempio, potremmo scrivere

InerziaSoft.eu                         pag. 13 / 27
Tutorial n. 002                  Leopard, PHP e MySQL                       vers.1.1 - 09//2009

help Data Types
ed otterremo una lista di tutte le keyword da usare nella definizione dei tipi di dati. In
questo modo, potremmo avere tutte le informazioni sul linguaggio di MySQL. Dʼaltra parte
è molto più semplice andare sul sito di MySQL, dove è mantenuta tutta la definizione del
linguaggio e dove sono raccolti anche contributi degli utenti.
Giusto per fare qualche esercizio, entriamo come utenti registrati; subito dopo
lʼinstallazione, sono definiti 5 utenti: due senza nome (anonimi) e tre con privilegi massimi
(root), senza password. Entriamo come utente root, dando  alla richiesta della
password:
sudo /usr/local/mysql/bin/mysql -h localhost -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 56
Server version: 5.1.36 MySQL Community Server (GPL)
Type 'help;' or '\h' for help. Type '\c' to clear the current input
statement.
mysql>

Siamo entrati nel db! Come prima cosa, chiediamo a MySQL che versione è e la data
attuale (possiamo dare i comandi anche in minuscolo, ma è buona norma usare il
maiuscolo, così vediamo meglio i comandi):
mysql> SELECT VERSION(), CURRENT_DATE;
+-----------+--------------+
| VERSION() | CURRENT_DATE |
+-----------+--------------+
| 5.1.36    | 2009-07-05   |
+-----------+--------------+
1 row in set (0.00 sec)

mysql>
La risposta è ben impaginata, con alcuni segni in modo da vedere le colonne: per MySQL
qualunque risposta viene mostrata in questo modo: stiamo parlando di un database, dove
le righe e le colonne sono tutto!
Non indovinate dove MySQL mantiene i dati necessari al funzionamento? Ovvio, in un
database chiamato mysql! Per confermare quanto detto sopra sugli utenti, proviamo a dare
il seguente comando, col quale chiediamo a MySQL di dirci cosa contiene la tabella User
del database mysql, nelle colonne Host e User (ricordiamo il punto e virgola a fine riga):
mysql> SELECT Host,User FROM mysql.user;
+--------------+------+
| Host         | User |
+--------------+------+
| 127.0.0.1    | root |
| MaxPro.local |      |
| MaxPro.local | root |
| localhost    |      |
| localhost    | root |
+--------------+------+
InerziaSoft.eu                        pag. 14 / 27
Tutorial n. 002                 Leopard, PHP e MySQL                       vers.1.1 - 09//2009

5 rows in set (0.00 sec)

mysql>
Vediamo che in effetti gli utenti sono 2, ma provengono da computer diversi... o meglio,
dallo stesso Mac, ma visto in modo diverso: infatti 127.0.0.1, localhost e MaxPro (il nome
del mio Mac) rappresentano la stessa macchina.
Ancora un esempio, che potrebbe servirci nel seguito; questa volta vogliamo conoscere
alcuni parametri dellʼinstallazione MySQL, usando il comando status:
mysql> status
--------------
/usr/local/mysql/bin/mysql Ver 14.14 Distrib 5.1.36, for apple-
darwin9.5.0 (i386) using readline 5.1

Connection id:        59
Current database:
Current user:         root@localhost
SSL:             Not in use
Current pager:        stdout
Using outfile:        ''
Using delimiter: ;
Server version:       5.1.36 MySQL Community Server (GPL)
Protocol version:     10
Connection:           Localhost via UNIX socket
Server characterset: latin1
Db      characterset: latin1
Client characterset: latin1
Conn. characterset: latin1
UNIX socket:          /tmp/mysql.sock
Uptime:               1 day 3 hours 32 min 17 sec

Threads: 1 Questions: 1711 Slow queries: 0 Opens: 38                   Flush tables: 1
Open tables: 19 Queries per second avg: 0.17
--------------

mysql>
Tra queste info, troviamo lʼutente con cui siamo connessi (in questo caso root su
localhost) lʼuptime (tempo dallʼultimo avvio del server), i set di caratteri utilizzati, il
percorso del socket, più alcune informazioni sui processi in atto.

Interfacce utente per MySQL
Volendo, potremmo quindi comandare MySQL da terminale: anche se possibile, è chiaro
che non possiamo fare qualcosa di serio senza avere un tool di amministrazione più
evoluto della riga di comando. Infatti, a differenza dei database a pagamento, MySQL
arriva senza unʼinterfaccia grafica. Per cui usciamo dal Terminale digitando

InerziaSoft.eu                       pag. 15 / 27
Tutorial n. 002                   Leopard, PHP e MySQL                       vers.1.1 - 09//2009

\q
seguito da  (oppure direttamente Ctrl-D) il che ci porta fuori da mysql. Chiudiamo
il terminale e andiamo alla ricerca di strumenti più semplici e immediati.
Su Mac OSX esistono almeno 4 software che possiamo provare per poi scegliere quello
più vicino al nostro modo di agire; oppure potremo tenerli tutti, usando uno o lʼaltro a
seconda dellʼattività che ci serve fare in quel momento; in effetti, li tengo tutti a
disposizione, usando uno o lʼaltro, ciascuno per le loro particolarità.
I 4 software, tutti gratuiti, che valgono una prova sono:
• phpMyAdmin;
• Sequel Pro;
• MySQL Tools;
• Navicat Lite
Vediamone i punti salienti, con qualche approfondimento dove necessario.

phpMyAdmin
                   (www.phpmyadmin.net)
                      Giunto alla versione 3.2.0.1, si tratta di unʼapplicazione web (funziona
                      cioé allʼinterno di un browser) costruita in PHP, frequentemente
                      aggiornata sia per caratteristiche che per bug fix. Le ultime versioni
                      richiedono MySQL 5 e PHP 5.2 (ma sono ancora disponibili e
supportate versioni precedenti); la documentazione online è completa e dettagliata. Oltre
10 anni di storia hanno portato phpMyAdmin ad un ottimo livello, compresa la traduzione
in molte lingue (dato che per semplicità installo sempre quella inglese, non so dire nulla
sullʼaccuratezza della traduzione); lʼinstallazione è immediata, anche se il setup non è
proprio semplicissimo: per mettere in sicurezza lʼambiente occorre leggere bene la
documentazione e fare qualche prova prima di esporsi alle insidie della rete. Se lʼusiamo
solo per sviluppare sul proprio Mac, lʼinstallazione può essere molto semplificata non
impostando una password; se però potrebbe capitare di esporsi sulla rete, allora è meglio
utilizzare tutte le sicurezze previste.
Scegliamo la versione zip (con qualcuna delle altre potremmo avere qualche problema
download); una volta scaricata, doppio click nel Finder e ci troviamo con una cartella nel
cui nome è indicata la versione: consiglio di togliere questa parte del nome, lasciando
ʻphpMyAdminʼ: dato che dovremo aprirla nel browser, più il nome è semplice, meno errori
faremo nello scrivere lʼindirizzo! Poi spostiamo tutta la cartella nella directory Siti del
nostro utente: potremmo metterla anche nel sito principale del nostro Mac, ma dato che
dovremo lavorarci sopra, tanto vale che sia a portata di mano.
La prima cosa da notare è che phpMyAdmin, come la maggior parte delle interfacce di
MySQL, non effettua alcuna gestione degli utenti e delle password (a parte tenersi le
preferenze): la coppia utente/password che forniremo verrà passata direttamente a
MySQL; phpMyAdmin si occuperà solo di verificare la risposta del db e mostrarci un
messaggio di errore se qualcosa non torna.

InerziaSoft.eu                         pag. 16 / 27
Tutorial n. 002                   Leopard, PHP e MySQL                         vers.1.1 - 09//2009

Installazione
Cʼè la possibilità di impostare tutto via interfaccia grafica, ma richiede un poʼ di attenzione:
occorre infatti creare una cartella, assegnarle dei particolari permessi, avviare da browser
uno specifico script e poi rimettere tutto a posto, sempre a mano; inoltre, lʼinterfaccia
grafica dello script non è così semplice, per cui esamineremo le impostazioni più
importanti e faremo tutto editando un file di configurazione. Se volete provare la via
grafica, sul sito di phpMyAdmin sono riportate precise istruzioni.
Per prima cosa, nella cartella phpMyAdmin cerchiamo il file config.sample.inc.php; si
tratta di un file di esempio, come indica il nome: duplichiamolo col Finder, in modo da
avere sempre a disposizione lʼoriginale, chiamiamolo config.inc.php e apriamolo, sempre
con TextWrangler. Al suo interno troviamo dei comandi di base, alcuni attivi e altri
commentati; noi ne terremo solo alcuni, il minimo indispensabile. Lʼinstallazione arriva
infatti con già impostati alcuni valori di default; tali valori sono riportati nel file
phpMyAdmin/libraries/config.default.php

Possiamo aprire anche questo con TextWrangler: vi sono riportate annotazioni
interessanti, ma facciamo attenzione a non cambiare nulla delle impostazioni di default: il
meccanismo di configurazione prevede infatti che phpMyAdmin carichi alla partenza
questo file, ma subito dopo anche il file
phpMyAdmin/config.inc.php

che stiamo per costruire; in questo modo, i valori di default possono essere sovrascritti in
questo secondo file, mentre le proprietà non toccate restano quelle di default; inoltre, è
facile tornare ai default di partenza: basta lasciare bianco config.inc.php.
Il primo comando da sovrascrivere è quello che permette di criptare il nome utente e
lʼeventuale password, per nasconderla ai malintenzionati: anche se siamo sul nostro Mac,
può essere utile abituarsi a queste pratiche; forniamo quindi il cosiddetto blowfish,
fornendo un poʼ di caratteri e numeri scritti a caso:
$cfg['blowfish_secret'] = 'ufhj3dodc69q1jgnf67.....';

Non è necessario ricordare cosa abbiamo inserito. Sembra che si possano fornire fino a
46 caratteri, sufficiente per la nostra sicurezza. Dato che lo useremo per entrare sul server
db del nostro mac, dobbiamo configurare lʼaccesso ad un solo server, il nostro, appunto.
Per questo, saltiamo qualche riga, fino a dove troviamo alcune assegnazioni:
$cfg['Servers'][$i]['auth_type'] = 'cookie';

Con questo scegliamo di usare lʼautenticazione usando i cookie (dovranno essere
ovviamente abilitati sul browser che useremo).
Meno sicuro, ma più comodo, al posto del blowfish e del tipo ʻcookieʼ, potremmo usare le
seguenti impostazioni:
$cfg['Servers'][$i]['auth_type'] = ‘config’;

$cfg['Servers'][$i]['user'] = ‘nomeUtente’;

$cfg['Servers'][$i]['password'] = ‘password utente’;

dove utente e password sono direttamente memorizzati nel file di configurazione e quindi
leggibili da chiunque abbia accesso al file.
Ora dobbiamo definire il server; ogni server interpreta lʼindirizzo IP 127.0.0.1 come il
proprio locale, a cui ci si connette in TCP:

InerziaSoft.eu                         pag. 17 / 27
Tutorial n. 002                   Leopard, PHP e MySQL                       vers.1.1 - 09//2009

$cfg['Servers'][$i]['host'] = '127.0.0.1';

$cfg['Servers'][$i]['connect_type'] = 'tcp';

Questo è il modo più semplice, ma non lʼunico; potremmo anche usare le successive
istruzioni al posto delle due precedenti: qui usiamo il socket invece che il TCP, chiamando
lo stesso server col suo nome:
$cfg['Servers'][$i]['host'] = 'localhost';

$cfg['Servers'][$i]['connect_type'] = 'socket';

$cfg['Servers'][$i]['socket'] = '/tmp/mysql.sock';

dove lʼultima è solo per chiarezza: il socket infatti si trova nellʼindirizzo di default, come
abbiamo spiegato prima. Da notare che lʼuso del socket è possibile solo se il db si trova
sullo stesso computer usato dal web server; in caso di dubbi (p.es. se stessimo
preparando un sito per un server remoto), usiamo quindi la prima coppia di istruzioni.
Completiamo la configurazione con:
$cfg['McryptDisableWarning'] = true;

che elimina il messaggio di errore se la libreria Mcrypt non è installata (default sui nostri
Mac: è una libreria che accelera lʼaccesso, ma non è indispensabile);
$cfg['Servers'][$i]['compress'] = false;

evita di compattare le comunicazioni: al momento è sperimentale.
$cfg['Servers'][$i]['AllowNoPassword'] = true;

ci permette di entrare anche se la password non è settata (come è al momento). Ancora
una cosa:
$cfg['Servers'][$i]['extension'] = 'mysql';

Indica quale libreria usare per accedere al db dal PHP; se lʼinstallazione la contiene, è
consigliato lʼuso di mysqli: questa prevede un accesso più laborioso, per cui se non ci
interessano più di tanto le prestazioni, possiamo utilizzare mysql.
Riassumendo, quindi, il nostro file di configurazione è in totale:
$cfg['blowfish_secret'] = 'ufhj3dodc69q1jgnf67lf8d7s...';

$i = 0;

$i++;

$cfg['Servers'][$i]['auth_type'] = 'cookie';

$cfg['Servers'][$i]['host'] = '127.0.0.1';

$cfg['Servers'][$i]['connect_type'] = 'tcp';

$cfg['McryptDisableWarning'] = true;

$cfg['Servers'][$i]['compress'] = false;

$cfg['Servers'][$i]['extension'] = 'mysql';

$cfg['Servers'][$i]['AllowNoPassword'] = true;

Salviamo il file, puntiamo Safari su
http://localhost/~nomeUtente/phpMyAdmin

InerziaSoft.eu                         pag. 18 / 27
Tutorial n. 002                    Leopard, PHP e MySQL                        vers.1.1 - 09//2009

                                                                dove nomeUtente deve essere
                                                                sostituito dal nome della
                                                                vostra Home; diamo 
                                                                e vedremo comparire la
                                                                schermata di ingresso, dove
                                                                inserire utente e password
                                                                (figura a fianco).
                                                                Lʼutente con privilegi di
                                                                amministratore è per ora
                                                                root, senza password (non
                                                                inseriamo nulla in quel
                                                                campo): un  e siamo
                                                                entrati!
                                                                Se doveste vedere soltanto
                                                                una pagina di solo testo,
                                                                controllate che il Apache sia
                                                                attivato.
                                                               Se tutto è andato bene,
                                                               dovete “solo” più andare a
                                                              leggere le istruzioni SQL... e
siete a posto! Guardiamo con attenzione la home page di phpMyAdmin, perché fornisce
molte informazioni e comandi; primo fra tutti, il cambio della password, sempre consigliato
(ma ricordatevi di annotarla, altrimenti non potrete più usare lʼutente root!).
Inoltre, se scegliamo Privileges nel menu in alto, potremo anche aggiungere utenti: cosa
molto utile, in quanto non conviene abituarsi ad usare lʼutente root per tutte le applicazioni.
Questa a altre operazione vanno oltre gli scopi di questa veloce carrellata; potete
comunque trovare aiuto sulla rete.
phpMyAdmin supporta le più importanti operazioni su database:
• creazione, modifica e cancellazione di database, tabelle, viste, campi, indici;
• manutenzione di server e database, assieme a proposte sulle configurazioni dei server;
• importazione dati e database mediante file CSV e SQL;
• esportazione in molti formati tra cui CSV, SQL, XML, PDF, ODF, DOC, XLS, LaTEx;
• creazione di grafici in pdf della struttura del DB;
• esecuzione di comandi diretti SQL
Nel sito è anche possibile provare il software in tutte le sue funzionalità.
Unʼimportante difetto è la mancanza di una gestione diretta delle stored procedure (che
MySQL supporta a partire dalla versione 5), anche se è possibile generarle indirettamente
utilizzando la console SQL; dʼaltra parte è probabile che questa gestione apposita venga
aggiunta in una prossima versione.
Essendo unʼapplicazione web, è molto facile personalizzare lʼinterfaccia e sul sito è
possibile scaricare un certo numero di temi; inoltre può essere utilizzato su qualunque
piattaforma che supporti il modulo PHP e per questo motivo spesso se ne trova una
personalizzazione sui siti di web hosting, come amministrazione ufficiale del database.

InerziaSoft.eu                          pag. 19 / 27
Tutorial n. 002                    Leopard, PHP e MySQL                      vers.1.1 - 09//2009

Sequel Pro
                    (www.sequelpro.com)
                    Evoluzione di CocoaMySQL, open source generato in Cocoa Universal
                    Binary, quindi espressamente per Mac OS (sia PPC che Intel), è un tool
                    sufficientemente completo per la normale amministrazione del DB.
                    Attualmente in versione 0.9.6, ha tutte le funzionalità importanti
                    necessarie:
                    •amministrazione di DB locali e remoti;
• import e export con un buon numero di formati, tra cui SQL, CSV, XML;
• creazione, modifica, cancellazione di database, tabelle, viste, campi;
• console SQL per lʼinserimento e lʼesecuzione di comandi più complessi.
In futuro potrebbe diventare un software chiave, in quanto possiede piani per il supporto di
SQLite e PostgreSQL; è talmente veloce e leggero che può dare lʼimpressione di poca
potenza (siamo abituati a pensare che i programmi lenti siano più potenti!). Inoltre
lʼinterfaccia è coerente con quella del Mac e può usare le notifiche di Growl.
Essendo Open Source, è anche possibile scaricare il codice e compilarlo in proprio tramite
XCode, magari modificandolo per i propri scopi (se lo fate, ricordate di rimettere in circolo
le modifiche al codice!).
Punto a sfavore (per il momento) è la mancanza della documentazione: sul sito avvertono
che è in ristrutturazione per tener conto delle nuove caratteristiche: data la recentissima
uscita è un peccato perdonabile. Non supporta direttamente le stored procedure e le
function, anche se, come nel caso precedente, possono essere create indirettamente,
utilizzando la console SQL.
Viene anche citato nella sezione Code di Google.
Al momento si tratta di un software Mac-only: se sviluppate solo su Mac, non cʼè
problema. Anzi, se siete interessati a collaborare o anche solo a localizzare il software, sul
sito ci sono informazioni.

MySQL Tools
                  (dev.mysql.com/downloads/gui-tools/5.0.html)
             Fornito dai creatori di MySQL (Sun), per cui in teoria dovrebbe essere il
             massimo; composto da 2 software separati: Administrator e Query
             Browser. Per Windows viene anche fornito un Migration Toolkit, mentre
             nella versione Mac cʼè in più un widget per la Dashboard per controllare
lʼandamento del server MySQL.
Facendo un confronto, fornisce praticamente le stesse caratteristiche dei precedenti
software: sono permesse tutte le operazioni necessarie per lʼamministrazione, con qualche
automatismo in più: nella console del Query Browser si può fare il drag&drop delle tabelle
sullʼarea della console, evitando di dover scrivere tutti i nomi: se si usano bene le aree di
azione, la query può essere scritta quasi in automatico.

InerziaSoft.eu                          pag. 20 / 27
Tutorial n. 002                   Leopard, PHP e MySQL                          vers.1.1 - 09//2009

Inoltre, nella parte bassa è possibile sfogliare ed usare tutte le funzioni speciali di MySQL,
utile pro-memoria durante la costruzione delle query; anche la parte Administrator è
completa di tutto quanto ci può servire.
Come ci si poteva attendere da chi ha sviluppato il database, rappresenta un supporto
completo per tutte le caratteristiche; in particolare, supporta le stored procedure e le
functions e la parte di amministrazione è completa; per contro, è necessario avviare
entrambe le applicazioni per avere tutte le possibilità fornite.
Il neo è rappresentato dal fatto che non esiste la versione apposita per Leopard: mentre
su Intel è sufficientemente stabile, su PPC mostra qualche problema di crash inatteso,
soprattutto il Query Browser. Inoltre, pur essendo completo, lʼutilizzo non è il solito che ci
aspetta da un software creato per Mac OSX, per cui è necessario un breve tempo per
abituarsi; dʼaltra parte, se si lavora anche su Windows, si deve imparare solo un software
per entrambi i sistemi.

Navicat Lite
                       (www.navicat.com)
                       Versione gratuita di un programma commerciale. Per la cronaca,
                       esistono anche versioni per lʼamministrazione di PostgreSQL e di
                       Oracle. Nel caso di MySQL, esiste anche per Windows e Linux,
                       oltre che per Mac OS, per il quale viene affermata la perfetta
                       compatibilità con Leopard (durante le prove non ho verificato crash
                       o comportamenti strani).
                       Il supporto è completo, comprese le stored procedure e le function,
con una buona stabilità, tipica di un prodotto commerciale ben progettato. Cʼè da notare
che le versioni lite hanno una licenza per usi non commerciali; la versione a pagamento
prevede 30 giorni di utilizzo normale, per permettere di verificare se le sue caratteristiche
sono quelle cercate. Inoltre, forse per invogliare allʼacquisto, la versione Lite riporta tutti i
menu della versione completa, anche se non funzionano.
Lʼinterfaccia è tipica Mac, anche se talvolta certe funzionalità devono essere cercate a
fondo nei menu; per navigare tra i record di una tabella bisogna fare un doppio click,
ottenendo quindi una nuova finestra, in cui è disponibile anche un editor esadecimale,
cosa talvolta utile.

Riassunto
Questo quattro software sono tutti praticamente allo stesso livello, sia per prestazioni che
per affidabilità; la scelta dipende da cosa pensiamo di fare. Il mio suggerimento è di partire
con il conosciutissimo phpMyAdmin: se poi pensiamo di utilizzare spazio web con
database di uno dei molti provider, molto probabilmente ci troveremo a gestire il database
remoto con una versione, magari personalizzata, di phpMyAdmin, per cui in ogni caso è
un software da provare, non fosse altro per familiarizzarsi.

InerziaSoft.eu                          pag. 21 / 27
Tutorial n. 002                  Leopard, PHP e MySQL                       vers.1.1 - 09//2009

Una volta imparato cosa si deve fare per creare e amministrare un database, possiamo
passare ad uno degli altri software. Attenzione alla licenza di Navicat Lite; per il resto, è
questione di scelte personali e di necessità.
Non dimentichiamo di effettuare periodicamente un backup sia dei dati che della struttura
del database; il modo più semplice è di esportare un database in formato SQL, che poi è
un normale formato di testo, in cui sono riportate tutte le istruzioni SQL per ricreare il
database ed il suo contenuto (vedi Appendice A).

InerziaSoft.eu                        pag. 22 / 27
Tutorial n. 002                   Leopard, PHP e MySQL                          vers.1.1 - 09//2009

Appendice A: Backup
Come accennato nel testo, è molto utile effettuare un backup del proprio database o
magari addirittura di tutto il contenuto di MySQL: sappiamo che MacOS e in genere Unix/
Linux sono molto stabili, ma questo non è un motivo per dimenticare un buon backup. Gli
hard disk, per esempio, non sono eterni e basta un settore dellʼindice danneggiato per
                                        perdere tutto il proprio lavoro.
                                        Lʼidea di andare da Finder nella cartella:
                                        /usr/local/mysql

                                      e semplicemente copiare le cartelle non funziona:
                                      infatti, come vediamo dalla figura a fianco, la cartella
                                      Data, che contiene tutti i database dellʼinstallazione,
                                      non è accessibile direttamente: lʼunico utente che
                                      potrebbe accedervi in lettura/scrittura è _mysql, cioé
                                      il database stesso! Potete constatarlo selezionando
la cartella da Finder e facendo Cmd-I ed aprendo il tab Condivisione e permessi.
Ovviamente, non serve tentare di copiare la cartella da unʼaltra parte: dopo aver fornito la
password di amministratore, potremmo entrare e vedere cosa cʼè; ma in caso di problemi
non potremmo andare a sostituire la vecchia cartella con questa appena copiata! E anche
se fornissimo di nuovo la password di amministratore, la sostituzione avrebbe il solo
effetto di creare problemi, in quanto nella stessa cartella è anche mantenuto il database
che permette a MySQL di funzionare, che non sarebbe certo aggiornato.
Per fortuna, tutti i software di interfaccia utente presentati permettono lʼesecuzione di
backup. A seconda del software utilizzato, le opzioni possono variare, ma permettono
comunque di salvare una copia del database di cui vogliamo il backup.
Con phpMyAdmin, una volta entrati, basta cliccare su Esporta, selezionare tutte le tabelle,
scegliere il formato e cliccare Esegui. Per gli altri applicativi visti prima, dovete cercare un
comando Export o Backup (e per ristabilire una copia al posto dellʼattuale, dovete cercare
gli analoghi Import o Restore).
A differenza dei database tipo Microsoft SQL, dove il backup di solito indica una esatta
copia delle tabelle e delle strutture, qui di solito lʼuscita è un file di testo più o meno
ʻpesanteʼ, con estensione .sql in cui sono raccolte tutte le istruzioni necessarie a MySQL
per ricreare sia la struttura del database che i dati contenuti in esso: possiamo verificarlo
facilmente, aprendo il file con un comune editor di testi (come TextWrangler o anche
TextEdit). In pratica il restore è fatto dando in automatico il file al db, che eseguirà tutte le
istruzioni contenute, ricreando le tabelle e inserendovi i dati, come se lo stessimo facendo
a mano da terminale.
Durante il backup, se il software scelto lo permette, è bene chiedere di inserire istruzioni
DROP e controlli IF EXISTS, anche relativi al database, oltre che alle varie tabelle: in
questo modo infatti è possibile ricreare da zero database, struttura e dati, in caso di
perdita completa. Contemporaneamente, le istruzioni IF permetteranno di creare database
e tabelle solo se queste non esistono, in modo da non ottenere errori in risposta.
Alcuni software permettono anche di esportare in un file compresso .zip, per contenere le
dimensioni nel caso di database pesanti; talvolta sono possibili anche altri formati, da cui
può essere più semplice ottenere i dati nel caso volessimo costruire elaborazioni non
ottenibili in altro modo: CVS, testo comma-delimited e altri.

InerziaSoft.eu                          pag. 23 / 27
Tutorial n. 002                   Leopard, PHP e MySQL                        vers.1.1 - 09//2009

Avendo a disposizione questo backup, in caso di problemi si potrà usare lo stesso
software di interfaccia per importare il tutto nel db, utilizzando le funzioni di restore (o
importa).
Questo processo di backup & restore è anche utile quando, dopo aver sviluppato in locale,
vogliamo portare il tutto sul nostro sito web, utilizzando il software di interfaccia collegato
al db del sito, o viceversa quando vogliamo avere in locale gli stessi dati preenti sul nostro
sito.

InerziaSoft.eu                         pag. 24 / 27
Tutorial n. 002                   Leopard, PHP e MySQL                       vers.1.1 - 09//2009

Appendice B: Il Terminale
Dato che in questo tutorial si deve usare il terminale, ho riportato in questa sezione alcune
indicazioni utili per lʼuso. Vale sempre lʼavvertimento di fare attenzione a quello che si fa:
un comando dato con leggerezza può compromettere la stabilità di Unix e di MacOS X,
per cui rileggete bene quanto scritto sul terminale prima di dare lʼinvio.
Folder Home: per indicare che un percorso parte dalla Home dellʼutente, inserire il
carattere ~ (tilde).
Esempio: ~/Documents indica la cartella documenti dellʼutente attuale
Per vedere il contenuto di una cartella, usiamo il comando ls seguito da invio: la risposta è
lʼelenco dei file (corrisponde al dir del DOS):

Se volessimo vedere i file normalmente nascosti, bisogna aggiungere il parametro -a:

in cui i file normalmente invisibili hanno un punto ʻ.ʼ davanti al nome.
Se invece siamo interessati a maggiori informazioni su ogni file, aggiungiamo il parametro
-l (sta per long), da cui otteniamo nome, data di modifica, gruppo e proprietario del file,
dimensioni e permessi read/write:

InerziaSoft.eu                         pag. 25 / 27
Tutorial n. 002                   Leopard, PHP e MySQL                      vers.1.1 - 09//2009

Notiamo che la cartella etc è un link, cioé punta ad unʼaltra cartella (in questo caso
private/etc): viene rappresentata con il nome seguito da una freccia e dal nome della
cartella a cui punta.
Se vogliamo la lista dei file in una certa cartella, faremo seguire al comando ls con i suoi
eventuali parametri, lʼindirizzo a partire dalla posizione attuale:
ls documents/sviluppo/applescript

e se la cartella è meno annidata nel sistema di dove ci troviamo, possiamo specificare il
percorso partendo dalla cartella iniziale dellʼhard disk, indicata con ʻ/ʼ:
ls -a /library

Se nel percorso ci sono degli spazi, possiamo racchiudere il percorso tra apici:
ls -a ~/library/’Application Support’
oppure usare il carattere ʻ\ʼ prima dello spazio:
ls -a ~/library/Application\ Support

Se vogliamo dare una rapida occhiata ad un file di testo senza doverlo aprire con
TextWrangler, possiamo usare il comando cat seguito dal percorso del file, ricordandoci di
fornire anche lʼestensione (in questo caso, il nome del file è prova testo.txt):
cat Desktop/prova\ testo.txt

Muoversi con la linea di comando è ben diverso dal farlo nel Finder; per cui cʼè ancora un
comando che può essere molto utile per evitare di dover scrivere percorsi molto lunghi: si
tratta di ʻcdʼ (identico al mondo DOS) che, seguito dal percorso, porta il terminale a
puntare nella cartella scelta.
Per esempio, se vogliamo fare la lista dei documenti del sito di sistema, dovremmo
scrivere:
ls /Library/Webserver/Documents
e dovremmo ripetere il percorso per ogni operazione che dobbiamo fare; se invece usiamo
il comando cd:
cd /Library/Webserver/Documents
ls
da adesso in poi non dovremmo più inserire il percorso. Per tornare a puntare nella Home
dellʼutente, basta scrivere

InerziaSoft.eu                          pag. 26 / 27
Puoi anche leggere