Come settare un ambiente LAMP passo dopo passo (6/7)

Nel precedente articolo abbiamo installato MySQL, ma per la sua prima esecuzione sono necessari alcuni passi che illustriamo di seguito.

Innanzitutto rimanendo nella solita cartella, lanciamo uno script che si occupa di inizializzare la base di dati:#./scripts/mysql_install_db. Poi ci assicuriamo che i file risultanti dall’installazione e la cartella contenente i vari schemi siano assegnati all’utente corretto:

#chown -R root:mysql /usr/local/mysql
#chown -R mysql:mysql /usr/local/mysql/data

Infine creiamo sotto /etc il file di configurazione my.ini, o meglio lo copiamo dai file di supporto già esistenti e gli assegniamo permessi e proprietario:

#cp support-files/my-medium.cnf /etc/my.cnf
#chown root:sys /etc/my.cnf
#chmod 644 /etc/my.cnf

Oltre al file my-medium.cnf è possibile scegliere di utilizzare uno tra tre altri file in base alle dimensioni del database: my-small.cnf, my-large.cnf o my-huge.cnf. A questo punto è importante indicare al sistema operativo quali sono le librerie a link dinamico che necessita MySQL:

#echo "/usr/local/mysql/lib/mysql" >> /etc/ld.so.conf
#ldconfig

È fondamentale nel caso di un server pubblico o comunque non strettamente sotto il nostro controllo creare uno script di start-up del sistema, che all’avvio carichi automaticamente MySQL come demone; diamo i permessi di esecuzione:

#cp ./support-files/mysql.server /etc/init.d/mysql
#chmod +x /etc/init.d/mysql
#/sbin/chkconfig --level 3 mysql on

Nelle ultime due righe sono stati aggiunti al file i permessi di esecuzione e infine, solo per le distribuzioni nominate in precedenza, si sono creati tutti i file necessari affinché MySQL parta automaticamente (on) come servizio nella fase testuale dello start-up del sistema operativo (livello 3). L’ultimo passo nel setup di MySQL consiste nel fare un link simbolico — ricordate la già discussa differenza concettuale tra i collegamenti di Windows e i link simbolici di Linux — sotto /usr/bin per ognuno dei file presenti in /usr/local/mysql/bin; per farlo basta lanciare una piccola azione da riga di comando dopo essere entrati nella cartella sorgente:

#cd /usr/local/mysql/bin
#for file in *; do ln -s /usr/local/mysql/bin/$file /usr/bin/$file; done

Si tratta di un ciclo abbastanza semplice da capire su tutti i file della cartella in oggetto. Se tutto è stato fatto correttamente, potremo far partire o fermare il nostro servizio da riga di comando direttamente dalla cartella init.d: #cd /etc/rc.d/init.d/mysql start oppure #cd /etc/rc.d/init.d/mysql stop. Possiamo testare il tutto vedendo la versione di MySQL installata: #mysqladmin version. A questo punto possiamo inserire una password per l’utente root di MySQL, che chiaramente non è il root di sistema:

#mysqladmin -u root password nuova-password.

Come ultima cosa, come promesso, alcuni consigli sulla sicurezza: è bene decommentare — eliminando il # all’inizio —la riga del nostro /etc/my.cnf, in cui appare skip-networking; questo permetterà l’accesso al database solo in locale (da applicazioni residenti sul server e non da server esterni). Per il resto è necessario usare il client a riga di comando di MySQL connettendosi con #mysql -u root -p e digitando al prompt la password scelta poco fa. A questo punto conviene eliminare tutti gli utenti del database, tranne l’utente root di MySQL che si connette in locale, e infine cambiargli il nome con, ad esempio, sqladmin:

> use mysql;
> delete from user where not (host="localhost" and user="root");
> update user set user="sqladmin" where user="root";
> flush privileges;

Come si può notare è lo schema mysql a contenere tutte le informazioni sugli utenti, che possiamo modificare con delle semplici query SQL, mentre l’ultima riga fa sì che tutte le informazioni su utenti e permessi vengano nuovamente lette e quindi siano aggiornate quelle in uso. Chiaramente il secondo rigo, qualora volessimo rendere possibile collegarsi al nostro database server anche in remoto, dobbiamo sostituirlo in modo che non venga cancellato nemmeno l’utente root che si collega in remoto, scrivendo quanto segue:

> delete from user where not user="root";

Se volessimo, potremmo anche eliminare il database test visto che di default è utilizzabile in scrittura da tutti gli utenti di MySQL. Per concludere, lanciamo un test abbastanza standard: creiamo ed eliminiamo un database verificando che il tutto venga eseguito correttamente:

> create database db_di_prova;
> drop database db_di_prova;

Se i messaggi che riceviamo non ci riportano errori, vuol dire che tutto funziona perfettamente, e che possiamo concludere il tutto nel prossimo articolo, installando e configurando Apache e PHP per completare il nostro ambiente LAMP.

LEZIONI PRECEDENTI:
19 Ottobre 2007: Come settare un ambiente LAMP passo dopo passo (1/7)
22 Ottobre 2007: Come settare un ambiente LAMP passo dopo passo (2/7)
23 Ottobre 2007: Come settare un ambiente LAMP passo dopo passo (3/7)
24 Ottobre 2007: Come settare un ambiente LAMP passo dopo passo (4/7)
6 Novembre 2007: Come settare un ambiente LAMP passo dopo passo (5/7)

di Pierpaolo CiraProgrammazione.it