Installazione di MySQL tramite RPM e compilazione dei sorgenti.
E' possibile effettuare il download di MySQL, sia in formato RPM che in formato sorgente disponibile per diverse piattaforme, presso il sito del produttore www.mysql.com oppure tramite uno dei suo mirror.
INSTALLAZIONE TRAMITE COMPILAZIONE DEI SORGENTI
L'installazione di MySql tramite sorgenti consiste nell'effettuare i tre classici step configure, make e make install. Prima di procedere è necessario creare l'utente ed il relativo gruppo che verrà utilizzato per fare girare il server:
root@Joker:/software# groupadd mysql
Creazione del gruppo
root@Joker:/software# useradd -g mysql mysql
Creazione dell'utente
SCOMPATTAZIONE
Per prima cosa si procede alla scompattazione dei sorgenti:
root@Joker:/software# tar -xzvf mysql-4.0.15a.tar.gz
mysql-4.0.15a/
mysql-4.0.15a/bdb/
mysql-4.0.15a/bdb/db/
mysql-4.0.15a/bdb/db/db_upg.c
[...]
CONFIGURAZIONE
Una volta scompattati i sorgenti è possibile configurare le opzioni di installazione tramite lo script configure
:
root@Joker:/software# cd mysql-4.0.15a
root@Joker:/software/mysql-4.0.15a# ./configure --help
Tramite l'opzione help è possibile visualizzare quali sono le opzioni disponibili per personalizzare al meglio l'installazione del server
root@Joker:/software/mysql-4.0.15a# ./configure --prefix=/usr/bin
checking build system type... i586-pc-linux
checking host system type... i586-pc-linux
In questo caso viene indicato di utilizzare il percorso /usr/bin per installare gli eseguibili del server
COMPILAZIONE
Una volta eseguita la configurazione è necessario compilare i sorgenti:
root@Joker:/software/mysql-4.0.15a# make
cd libmysql; make link_sources
make[1]: Entering directory `/software/mysql-4.0.15a/libmysql'
[...]
INSTALLAZIONE
L'ultimo passo da compiere è infine l'installazione:
root@Joker:/software/mysql-4.0.15a# make install
Una volta installato il software si devono creare le tabelle di grant, contententi i permessi per gli utenti che devono accedere al MySql:
root@Joker:/# mysql_install_db
Preparing host table
Preparing user table
Preparing func table
Preparing tables_priv table
Preparing columns_priv table
Installing all prepared tables
INSTALLAZIONE TRAMITE RPM
I pacchetti disponibili per il download e l'installazione sono diversi, ma quelli strettamente necessari all'installazione di un server sono sostanzialmente due: il server vero e proprio ed un client per la gestione di MySQL da command line.
Per evitare problemi di dipendenze, si procede prima con l'installazione del software client:
[root@vagante software]# rpm -ivh MySQL-client-4.0.17-0.i386.rpm
Preparing... ########################################### [100%]
1:MySQL-client ########################################### [100%]
Installazione del client
Successivamene si prosegue con l'installazione del server:
[root@vagante software]# rpm -ivh
Preparing...
MySQL-server-4.0.17-0.i386.rpm
########################################### [100%] 1:MySQL-server
########################################### [100%] Preparing db table
Preparing host table
Preparing user table
Preparing func table
Preparing tables_priv table
Preparing columns_priv table
Installing all prepared tables
Vengono inizializzate le tabelle di GRANT (quelle riguardanti i permessi di accesso ai database) e creato l'utente amministratore di MySQL. NOTA: L'installazione tramite RPM a partire dalla versione 4 di MySQL esegue questa operazione automaticamente. Installando la versione 3.23 e' ancora necessario eseguirla manualmente.
031224 20:26:35 /usr/sbin/mysqld: Shutdown Complete
PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
This is done with:
/usr/bin/mysqladmin -u root password 'new-password'
/usr/bin/mysqladmin -u root -h vagante password 'new-password'
See the manual for more instructions.
Ci viene ricordato di assegnare una password all'utente di root di MySQL
Please report any problems with the /usr/bin/mysqlbug script!
The latest information about MySQL is available on the web at http://www.mysql.com
Support MySQL by buying support/licenses at https://order.mysql.com
Durante l'installazione viene creata anche la directory dati di MySQL /var/lib/mysql
, la quale deve essere di proprietà dell'account utente utilizzato per far girare il server. E' buona norma che solo questo utente abbia l'accesso a questa directory e che i relativi permessi siano settati a 700 al fine di evitare possibili problemi di sicurezza.
CONFIGURAZIONE POST INSTALLAZIONE
Una volta avviato il server tramite /etc/rc.d/init.d/mysql start
oppure tramite l'utilty service, se presente, con service mysql start
è necessario collegarsi ad esso per assegnare una password all'utente root. L'utente root di MySQL ha i diritti per amministrare ogni componente del server, e di default viene creato senza password.
E' possibile settare la password di root grazie al tool mysqladmin:
[root@vagante software]# mysqladmin -u root password db3mendo
E' possibile utilizzare anche un secondo metodo per assegnare la password di root del server: [root@vagante software]# mysql -u root
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 6 to server version: 4.0.17-standard
Type 'help;' or '\h' for help.
Type '\c' to clear the buffer.
mysql> set PASSWORD FOR root = PASSWORD("db3mendo");
Query
OK, 0 rows affected (0.00 sec)
mysql>
In questo secondo modo, si comunica in modo interattivo con MySQL tramite una console appositamente creata
Una volta terminata la configurazione post installazione non resta settare a seconda del sistema la modalita' di avvio del server.
Non è immediato installare gli RPM ufficiali prelevati dal sito di MySQL nelle distribuzioni RedHat e/o Fedora, a causa di possibili conflitti di dipendenze. Vediamo come avere un MySQL aggiornato anche su queste distribuzioni.
Da sempre RedHat (e in seguito Fedora) ha privilegiato, tra i database server, PostgreSQL piuttosto che MySQL, pur fornendoli entrambe. Il risultato di questa politica è che le versioni di MySQL fornite con RedHat e/o Fedora non sono mai aggiornate, anzi di solito sono decisamente obsolete.
Installare MySQL su queste usando i pacchetti RPM ufficiali presenti sul sito www.mysql.com è spesso un problema; non per i pacchetti stessi, ma perchè in quelle distribuzioni sono presenti altri pacchetti (tipicamente i linguaggi Perl, PHP, Python) che necessitano delle librerie di collegamento al server MySQL: questa libreria si chiama libmysqlclient.so, ed è compilata specificatamente per RedHat, e non è la stessa fornita dagli RPM di MySQL.
Se si vuole avere una versione MySQL aggiornata e non si vuole fare la compilazione dai binari, e si vogliono anche usare contemporaneamente i linguaggi PHP e/o Perl forniti con RedHat e/o Fedora (questi ultimi sono quasi sempre aggiornati), occorre procedere come segue:
a) Installare, assieme ai linguaggi indicati, anche il mysql fornito con RedHat e/o Fedora (solo il pacchetto mysql, non anche il mysql-server);
b) salvare in una cartella temporanea il contenuto della cartella /usr/lib/mysql (dovrebbe contenere vari files del tipo libmysqlclient.so.x.x.);
c) rimuovere il pacchetto mysql, ignorando i conflitti di dipendenza, con:
rpm -e --nodeps mysql
d) Installare gli RPM ufficiali di MySql, ovvero MySQL-server, MySQL-client, MySQL-shared (anche MySQL-devel nel caso si debbano poi ricompilare librerie d'altro genere che richiedano i sorgenti di MySQL; è il caso ad es. della liberia DBD::MySQL di Perl); vedi a proposito l'articolo su questo stesso topic;
e) Eventualmente, modificare alcuni files di configurazione in modo da puntare alla corretta posizione di MySQL; per fare un esempio, nel file /etc/php.ini è bene specificare (anche se non sempre necessario) la posizione del socket di connessione al server MySQL, con la riga
mysql.default_socket = /var/lib/mysql/mysql.sock
nella corrispondente sezione del file di configurazione.
e) Se in seguito occorre aggiornare i linguaggi PHP, Perl ecc. e nel farlo dagli rpm si evidenzia tra le dipendenze richieste la libreria libmysqlclient.so, eseguire l'aggiornamento con rpm ignorando le dipendenze (sempre col param. --nodeps
).
Come effettuare il backup ed il restore dei database gestiti con MySQL.
BACKUP
I principali tool messi a disposizione all'amministratore di MySQL per effettuare il backup dei propri dati sono due: mysqlhotcopy e mysqldump.
mysqlhotcopy
mysqlhotcopy è uno script, scritto in linguaggio Perl, che, basandosi sul comando cp, effettua la copia "grezza" di un database, semplicemente copiando il contenuto della relativa directory dati, in un altro luogo sullo stesso sistema. La sua caratteristica principale è la velocità.
Esempio:
[root@vagante /]# mysqlhotcopy arnaldoz /backup-db/
In questo esempio il contenuto del database arnaldoz presente in /var/lib/mysql/arnaldoz viene copiato nella directory /backup-db
mysqldump
Mysqldump è un'utility che presenta alcuni vantaggi rispetto a mysqlhotcopy, ed quindi è maggiormente utilizzata. Essa genera un file ASCII contentente istruzioni SQL (CREATE TABLE, CREATE DATABASE ecc.) che permettono di ricreare completamente un database. Questo metodo permette di utilizzare lo script su qualsiasi piattaforma, ottenendo quindi una soluzione portabile. La seconda importante caratteristica è la flessibilità, modificando lo script prodotto, è possibile il ripristino anche di una sola tabella. Infine mysqldump permette di effetture il dump di un database da remoto.
Esempi:
[root@vagante backup-db]# mysqldump arnaldoz > arnaldoz_dump_db.sql -u root -p
Enter password: db3mendo
In questo caso viene eseguito il dump del database arnaldoz generando le relative instruzioni nel file arnaldo_dump_db.sql. E' necessario comunicare a mysqldump che si utilizzerà l'utente amministratore -u root con la relativa password -p
[root@vagante backup-db]# mysqldump --database arnaldoz mysql > arnaldoz_mysql_new_db.sql -u root -p
Enter password: db3mendo
Utilizzando l'opzione --database si esegue il dump dei detabase indicati, in questo caso arnaldoz e mysql
[root@vagante backup-db]# mysqldump --all-database > arnaldoz_new_db.sql -u root -p
Enter password: db3mendo
Con l'opzione --all-database viene generato lo script per la creazione di tutti i database presenti sul server
E' importante notare che utilizzando l'opzione --database
o --all-database
nello script sql generato vengono incluse anche le istruzioni per creare il database (CREATE DATABASE), mentre negli altri casi, si presuppone che il database sia gia' esistente, di conseguenza viene generato uno script SQL che si occupa solamente di ricreare le tabelle.
Per effettuare la copia di un database nel modo più veloce ed affidabile possibile, è consigliato di utilizzare l'opzione di mysqldump --opt
, la quale abilita automaticamente diverse altre opzioni quali --quick
, --add-drop-table
,--add-locks
,--extended-insert
, e--locktables
:
[root@vagante backup-db]# mysqldump --opt arnaldoz > arnaldoz_dump_db.sql -u root -p
Enter password: db3mendo
--quick: effettua il dump direttamente sullo standard output;
--add-drop-table: inserisce le istruzioni di eliminare le tabelle esistenti prima di ricrearle;
--add-locks: blocca momentaneamente gli eventuali inserimenti;
--extended-insert: utilizza un metodo per velocizzare l'inserimento dei dati;
--lock-tables: blocca momentanteamente le tabelle in lettura;
RESTORE
Qualora il backup del database sia stato fatto con mysqlhotcopy, il restore avviene, dopo aver fermato il server, copiando il contenuto del file di backup nella directory dati di MySQL:
[root@vagante /]# cp -R /backup-db/arnaldoz /var/lib/mysql
Per il restore di un database di cui si è fatto il backup con mysqldump è possibile utilizzare l'utility di console mysql.
Alcuni esempi:
[root@vagante backup-db]# mysql < arnaldoz_dump_db.sql -u root -p
Enter password: db3mendo
Come utente root, si passa a mysql in input lo script che permette di ripristinare il contenuto del database
[root@vagante backup-db]# mysql --one-database arnaldoz < all_db_joker.sql -u root -p
In questo caso sebbene lo script serva per ripristinare un elenco di database, tramite l'opzione --one-database viene specificato solo un database
E' possibile far sì che MySQL tenga traccia di tutte le query di comando eseguite su ogni database. Accoppiando questa feature con un meccanismo di backup, è possibile ripristinare un database danneggiato per riportarlo al momento presente.
Innanzitutto si prevede di effettuare un backup periodico dei databases; questo può essere eseguito da cron, garantendo così il salvataggio dei dati almeno fino all'ultimo backup.
Quando viene installato di default, MySQL prevede di eseguire un log esclusivamente delle fasi di avvio e fermata, e di eventuali errori del server. In genere, questi log vengono salvati in /var/lib/mysql/mysqld.log
.
Una volta installato MySQL, si modifichi il file /etc/my.cnf
come segue:
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-update=/var/log/mysql/queries
log-long-format
...
[mysql.server]
...
[safe_mysqld]
err-log=/var/log/mysql/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
...
Sono evidenziate nello script le parti da modificare. Come si vede, si è preferito far scrivere i log di MySQL su una cartella a parte, /var/log/mysql, un po' per analogia con altri server "importanti", come Samba o Apache, ma anche per il numero di logs che MySQL creerà, come vedremo tra poco.
Occorre ora creare la cartella e darle i permessi necessari:
mkdir /var/log/mysql
chown mysql:mysql /var/log/mysql
chmod 775 /var/log/mysql
Poichè abbiamo spostato la directory dei logs, dovremo cambiare anche il file che MySQL crea per la rotazione dei suoi log standard; la sua posizione dipende dalla distribuzione. Se MySQL è stato installato da pacchetti RPM, si troverà in /etc/logrotate.d/mysql
. Basterà cambiare la riga che indica la posizione del file di log, da
...
/var/lib/mysql/mysqld.log {
....
a
...
/var/log/mysql/mysqld.log {
....
(N.B. magari, se avete impostato una password per l'utente root di MySQL, modificate anche la riga più oltre che esegue lo scarico dei logs, inserendovi anche la password:
if test -n "`ps acx|grep mysqld`"; then
/usr/bin/mysqladmin --password=pwd_di_root
flush-logs
fi
)
Ora provate a lanciare il server MySQL (o a fermalo e riavviarlo, se già attivo) ed eseguire alcune query di comando (INSERT, DELETE, UPDATE...) sui databases. Nella cartella /var/log/mysql
si creerà un file queries.001
con un contenuto di questo genere:
# /usr/sbin/mysqld, Version: 4.0.15-standard-log at 040301 14:17:16
# Time: 040301 18:38:28
# User@Host: pippo[pippo] @ localhost []
USE dbProva;
UPDATE Download SET IDuser=149, Descrizione="Inserimento automatico dati ", Updated="04-2-20" WHERE IDDown=7;
# Time: 040301 18:50:59
# User@Host: root[root] @ localhost []
ALTER TABLE Download ADD vrs CHAR(10);
# Time: 040301 19:02:13
# User@Host: pippo[pippo] @ localhost []
UPDATE Download SET IDuser=149, Descrizione="Aggiornamento database", Updated="04-2-28", vrs="1.0.5" WHERE IDDown=8;
# Time: 040301 19:02:43
# User@Host: rt[rt] @ localhost []
DELETE FROM Download WHERE IDDown=7;
.....
Ecco quindi il meccanismo di recupero fino al tempo presente: da un backup recuperate la situazione dei databases fino ad un certo momento; quindi fate eseguire a MySQL queste query per aggiungere i comandi che riportano il database fino all'ultima modifica eseguita. Per questo è sufficiente
mysql -p < /var/log/queries.00n
dove n è il numero del log di query da eseguire.
E' opportuno sincronizzare da cron i backups e l'aggiornamento dei log: questo può essere fatto con uno script che:
1. Arresti il server MySQL (per impedire modifiche dagli utenti durante il backup);
2. Esegua il backup dei dati;
3. Rilanci il server MySQL.
In tal modo l'ultimo backup, seguito dall'esecuzione dell'ultimo log delle query, ripristinerà integralmente i databases.
C'è un'ultima cosa: ad ogni riavvio, MySQL crea un file di log queries.00n
con n numero progressivo. Se non si vuole mantenere traccia di tutti questi logs (e si vuole evitare l'affollamento del disco), è bene creare una rotazione di questi. Farlo con logrotate è un po' un problema, perchè la numerazione progressiva di logrotate rischia di creare conflitto con quella di MySQL. Si può allora fare uno script in bash di questo tipo:
file /usr/bin/mysqlrotate:
#!/bin/bash
MYPATH="/var/log/mysql/queries"
MAX=9
if [ -e $MYPATH.00$MAX ]
then
rm $MYPATH.001
N=2
while [ $N -le $MAX ]
do
M=`expr $N - 1`
mv $MYPATH.00$N $MYPATH.00$M
N=`expr $N + 1`
done
fi
Questo script mantiene fino a 9 logs successivi; basta modificare la variabile MAX per averne di più. Poichè MySQL crea un nuovo log ad ogni riavvio, può essere opportuno inserirlo direttamente nello script di avvio di MySQL stesso, in genere /etc/init.d/mysql
; basterà cercare il punto del case di start, ed aggiungere prima di ogni altra cosa la chiamata allo script di rotazione dei log:
....
case "$mode" in
'start')
# Start daemon
/usr/bin/mysqlrotate
if test -x $bindir/mysqld_safe
then
...
Seguono le istruzioni per resettare una password di root di mysql:
# stoppare mysqld
#killall mysqld
# lanciare mysqld con l'opzione skip-grant-tables, che evita di caricare le tabelle di sistema (tra cui anche quella degli accessi) fornendo libero accesso al servizio mysqld
# /usr/libexec/mysqld -Sg --user=root &
/usr/libexec/mysqld: ready for connections
# entrare in modalità client
# mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1 to server version: 3.23.56
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
#collegarsi al db mysql e inserire la query di update di cambio password
mysql> USE mysql
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> UPDATE user
-> SET password=password("mianuovapassword")
-> WHERE user="root";
Query OK, 2 rows affected (0.00 sec)
Rows matched: 2 Changed: 2 Warnings: 0
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql> exit
MySQL dispone di una gestione dei permessi di accesso molto avanzata e facilmente gestibile.
In moltissimi casi chi sviluppa su mySQL non gestisce i permessi in quanto è normalmente compito del sistemista o DBA (Database Administrator), però ritengo sia fondamentale capire come funzionano i permessi su mySQL perchè questa conoscenza aiuta a individuare molto rapidamente eventuali problematiche che dovessero insorgere.
Come è facile intuire dai nomi stessi GRANT concede privilegi, REVOKE li elimina.
CONCESSIONE PERMESSI CON GRANT
Esempio di sintassi per GRANT:
GRANT ON database.tabella/e TO user@host;
Analizzando nel dettaglio la sintassi di GRANT possiamo dire che con intendiamo i permessi di SELECT, INSERT, UPDATE ecc... successivamente vi verrà proposta una semplice tabellina dove vengono sintetizzati tutti i tipi di permessi assegnabili agli utenti.
Dopo “ON” bisogna dire per quale database ed eventualmente quale/i tabella/e vale il GRANT che si vuole eseguire sul DB.
Se si volesse assegnare dei permessi su tutte le tabelle di un database “rubrica” il comando da eseguire sarà: ON rubrica.*
Da ciò è facile dedurre che per * si intende tutte le tabelle.
A seguito del comando TO devono essere passati al comando GRANT l'utente che si vuole creare e l'host dal quale è possibile accedere al database server.
Se si desidera assegnare ad un utente certi permessi da parte di tutti gli host possibili bisogna utilizzare il carattere jolly: %
Un'altra opzione FONDAMENTALE per rendere sicuro il database server è di assegnare anche una password per l'utente, semplicemente aggiungendo:
IDENTIFIED BY 'password';
Come regola di massima la tendenza da parte di un sistemista che amministra una base dati mySQL è quella di restringere al massimo i permessi sul proprio DB e di concedere privilegi solo in caso di reale necessità.
In fase di sviluppo normalmente un programmatore non si interessa di queste problematiche ma ciò è sbagliato perchè si rischia che quando si va in produzione ci siano dei problemi.
REVOCA DI PRIVILEGI TRAMITE REVOKE
Per rimuovere permessi precedentemente assegnati si utilizza il comando REVOKE, il quale ha la stessa identica sintassi di GRANT:
REVOKE ON database.tabella/e TO user@host;
NOTA PER CHI VUOLE APPROFONDIRE
Questi sono i comandi base e più che sufficienti per amministrare gli accessi ad un DB mySQL tramite GRANT e REVOKE, comunque per la documentazione completa vi rimando al sito ufficiale:
http://dev.mysql.com/doc/mysql/en/GRANT.html
AUTORIZZAZIONI ASSEGNABILI CON L'ISTRUZIONE GRANT (Le principali) (da leggere)
PRIVILEGIO DESCRIZIONE
ALL PRIVILEGES Consente all'utente di eseguire TUTTO sulla base dati
FILE Importazione/Esportazione dati da un file su disco
RELOAD Ricaricamente tabelle di GRANT e svuotamento LOG
ALTER Modifica struttura delle tabelle
INDEX Aggiunta e rimozione di indici
SELECT Esecuzione query di estrazione dati
CREATE Consente di creare database, tabelle e indici
INSERT Inserimento nuovi record
DELETE Cancellazione record nelle tabelle
SHUTDOWN Spegnimento servizio mySQL
PROCESS Consente di eseguire “processlist” e “kill” per la gestione dei
thread del server
USAGE Sinonimo di INSERT, UPDATE e DELETE
UPDATE Aggiornamento dati nel DB
DROP Possibilità di eliminazione fisica di tabelle o database
Quando si amministrano i permessi bisogna stare particolarmente attenti a diversi privilegi che devono essere lasciati esclusivamente all'utente amministratore ROOT o ad altri power user assolutamente fidati. I privilegi in questione sono i seguenti:
PERMESSI PERICOLOSI DA ASSEGNARE AD UTENTI NON FIDATI (da leggere con attenzione)
PRIVILEGIO PERICOLO
FILE Consente all'utente di leggere qualunque file leggibile da
qualunque parte del mondo sul proprio server (compresi altri DB
mySQL) importando i dati in una tabella
PROCESS Permette di trovare password e dati importanti soprattutto per la
sicurezza
ALTER Permette di rinominare tabelle e di bypassare quindi i controlli di
accesso
SHUTDOWN Consente lo spegnimento! del server
Ora vedremo come gestire il controllo degli accessi poichè nella gestione del server questo argomento è di fondamentale importanza.
Di seguito trovate la struttura completa delle tabelle USER e DB che sono quelle principalmente utilizzate:
DESCRIBE USER
I permessi che ci interessano sono solo quelli che abbiamo già studiato nel capitolo relativo a GRANT e REVOKE, gli altri che vedete (Es. ssl_type, ssl_cipher ecc...) sono permessi che non vengono praticamente mai associati ad altri utenti se non all'amministratore (root) e quindi di fatto li possiamo ignorare.
Come sempre si può fare riferimento al manuale ufficiale di mySQL che li descrive in modo molto dettagliato.
SICUREZZA
Per la sicurezza del proprio sistema database è fondamentale non dare MAI permessi globali (validi per tutti i database presenti sul server) ad un utente, ma assegnargli i giusti privilegi dalla tabella DB.
APPROFONDIMENTO
Analizzando bene tutte le tabelle del DB mySQL con il comando show tables; e describe table; possiamo notare come in mySQL si possa assegnare permessi precisi e limitativi utilizzando anche le tabelle “tables_priv” e “columns_priv”.
In sostanza è sufficiente negare tutti i permessi ad un utente e dargli permessi solo sulle singole tabelle o addirittura alle colonne. Sinceramente capita molto raramente di doversi avvalere di queste features di sicurezza.
Installazione di MySQL e gestione del servizio in ambiente Windows.
E' possibile effettuare il download di MySQL, sia in formato RPM che in formato sorgente disponibile per diverse piattaforme, presso il sito del produttore www.mysql.com oppure tramite uno dei suo mirror.
DOWNLOAD
La versione per Windows di MySQL, come quella per gli ambienti Unix, può essere scaricata dal sito del produttore www.mysql.com nella sezione downloads oppure presso un suo mirror. MySQL è fornito attraverso un file zippato, una volta decompresso sarà possibile lanciare il programma di installazione vero e proprio dal nome setup.exe
.
INSTALLAZIONE
Una volta lanciato setup.exe
il programma di installazione ci informa che, qualora si intenda installare il server in una posizione differente da C:\MYSQL
(la posizione di default) o si intenda avviarlo come servizio è necesario che esista il file di configurazione C:\MY.CNF
contentente le seguenti informazioni:
[mysqld]
basedir=E:/installation-path/
datadir=E:/data-path/
Sono disponibili quattro tipi di file di configurazione d'esempio, my-small.cnf
, my-medium.cnf
, my-large.cnf
, my-huge.cnf
con parametri diversi a seconda del dimensionamento del server.
Il setup permette di scegliere fra tre diversi tipi di installazione tipica, compatta e personalizzata, salvo configurazioni particolari è consigliato sceglere quella tipica.
Una volta completata l'installazione, sotta la directory /BIN
è possibile trovare quattro tipi di eseguibili per avviare il server:
mysqld: con controllo dell'allocazione della memoria, supporto per link simbolici e tabelle delle transazioni;
mysqld-opt: ottimizzato senza supporto per le tabelle delle transazioni;
mysqld-nt: ottimizzato con il supporto per le pipe con nome di NT;
mysqld-max: ottimizzato con il supporto per le tabelle delle transazioni;
mysqld-max-nt: ottimizzato con il supporto per le pipe con nome di NT e le tabelle delle transazioni;
GESTIONE DEL SERVIZIO
Per installare il servizio è necessario utilizzare il parametro -install
:
C:\> c:\mysql\bin\mysqld-nt -install
Service successfully installed.
A questo punto è possibile avviare e fermare il il server attraverso la console MMC servizi presente in Strumenti di amministrazione, oppure tramite il comando net
:
C:\> net start mysql
Servizio MySQL in fase di avvio.
Avvio del servizio MySQL riuscito.
Avvia MySQL server
C:\> net stop mysql
Il servizio MySQL sta per essere arrestato.
Servizio MySQL arrestato.
Ferma MySQL server
Una volta impostata la password di amministrazione di MySQL:
C:\mysql\bin> mysqladmin -u root password 1pizz8
il server è pronto per l'uso.