Chiunque abbia mai avuto a che fare con Linux conoscerà sicuramente i cosiddetti packet manager (yum, aptitude, emerge, ecc.). Utilizzandoli insistentemente si rischia di non sapere più come comportarsi nel caso in cui sia necessario installare una vecchia versione di un pacchetto software, oppure una versione beta dello stesso (non presente nei repositories).
La prima scelta, solitamente, ricade sui pacchetti precompilati per una specifica architettura hardware ed un sistema operativo ben determinato. Quando questi pacchetti non sono disponibili (a.k.a. Gentoo), è necessario scaricare i file sorgenti e compilare il tutto a manetta.
Dopo questa breve introduzione, vi mostrerò come installare MySQL 5.0.91 su Gentoo. Tale procedura vale per tutte le versioni di MySQL che necessitano di compilazione manuale. Ma bando alle ciance e veniamo al dunque.
Per prima cosa creiamo la directory in cui verrà installato il pacchetto in questione:
nightfly@nightbox:~$ mkdir /usr/local/mysql
Adesso, dopo aver scaricato mediante wget la tarball contenente i sorgenti di MySQL, possiamo procedere con la loro compilazione ed installazione:
nightfly@nightbox:~$ tar -xvf mysql-5.0.91.tar.gz
nightfly@nightbox:~$ cd mysql-5.0.91
nightfly@nightbox:~$ ./configure --prefix=/usr/local/mysql
nightfly@nightbox:~$ make
nightfly@nightbox:~$ make install
Aggiungiamo l'utente mysql che useremo per avviare il demone e modifichiamo l'owner della directory target:
nightfly@nightbox:~$ chown mysql:mysql /usr/local/mysql
nightfly@nightbox:~$ cd /usr/local/mysql/bin
Installiamo i DB di default:
nightfly@nightbox:~$ ./mysql_install_db
Copiamo il file di configurazione di MySQL su /etc:
nightfly@nightbox:~$ cp /usr/local/mysql/share/mysql/my-medium.cnf /etc/my.cnf
Copiamo gli eseguibili in /usr/local/sbin:
nightfly@nightbox:~$ cp /usr/local/mysql/bin /usr/local/sbin
Verifichiamo che la copia sia andata a buon fine:
nightfly@nightbox:~$ which mysql
Copiamo il demone in /etc/init.d e rinominiamolo in mysqld:
nightfly@nightbox:~$ cp /usr/local/mysql/share/mysql/mysql.server /etc/init.d
nightfly@nightbox:~$ cd /etc/init.d
nightfly@nightbox:~$ mv mysql.server mysqld
Avviamo il demone e verifichiamo che sia attivo mediante un netstat ed un ps:
nightfly@nightbox:~$ /etc/init.d/mysqld start
nightfly@nightbox:~$ netstat -anp | grep :3306
nightfly@nightbox:~$ ps aux | grep mysqld
A questo punto possiamo definire la password per l'utente root digitando:
nightfly@nightbox:~$ mysqladmin -u root password <password>
L'ultima cosa da fare consiste nella definizione delle ACL di accesso ai DB. Un esempio di ACL è il seguente:
mysql> GRANT ALL ON *.* TO root IDENTIFIED BY 'rootpassword';
ovvero sto definendo il permesso (GRANT) di effettuare INSERT, UPDATE, DELETE e SELECT (ALL) su tutte le tabelle (*) di tutti i DB presenti (.*).
Come ultima verifica proviamo ad accedere a MySQL da locale e da remoto, lanciando il comando:
nightfly@nightbox:~$mysql -u root -prootpassword (da locale);
nightfly@nightbox:~$mysql -h <hostname> -u root -prootpassword (da remoto).
Se i tentativi di connessione vanno a buon fine vuol dire che il nostro DBMS è stato installato correttamente ed è pronto per l'uso.
A presto.