|
Le Guide d'installation d'Apache
06 août 2001
MySQL
Le Système de Gestion de Bases de Données Relationnelles
(SGBDR) MySQL doit sa popularité
à plusieurs facteurs. Tout d'abord son ouverture sur le monde du logiciel
libre, mais également sa simplicité et sa rapidité qui
lui ont valu d'être le moteur de bases de données de choix dans
les sites Web dynamiques.
En effet, MySQL offre des performances incroyables lors de la consultation de
données, ce qui est un critère primordial. A contrario, il n'est
que peu adapté pour des applications transactionnelles classiques (Online
Transaction Processing, OLTP), le verrouillage lors d'un ajout ou d'une modification
se faisant au niveau de la table toute entière. Ajoutons également
qu'il ne gère pas les clés étrangères. Ces lacunes
n'ont toutefois que peu d'impact dans le cadre d'un site d'information où
quelques webmestres ajoutent ponctuellement des news ou des articles.
Désormais libre d'utilisation, MySQL évolue régulièrement
et une nouvelle version dénommée MySQL-Max a vu le jour.
Celle-ci apporte un meilleur support des transactions et élargit de ce
fait le champ d'action de ce moteur aux qualités certaines. Le principal
concurrent de MySQL dans le monde du logiciel libre est PostgreSQL.
Ce SGBDR a une vocation de base plus généraliste que MySQL et
se veut donc plus complet. Ainsi, et entre autres, les clés étrangères
sont supportées et la gestion des verrous est plus souple. Par contre,
il n'est pas censé offrir la même rapidité en consultation
que son concurrent. A ce sujet, je vous renvoie vers deux articles (en Anglais)
où les deux moteurs sont comparés : MySQL
and PostgreSQL Compared et Database
Software Comparison.
Passons maintenant à l'installation de MySQL.
Tout d'abord, dans un souci de sécurité (surtout si votre serveur
est sur Internet), il est préférable de faire tourner le moteur
MySQL sous le profil d'un utilisateur avec des droits limités plutôt
que root. Ainsi, dans l'hypothèse où un pirate pourrait
exploiter une brèche de sécurité de MySQL, son champ d'action
serait limité aux droits conférés à l'utilisateur
fictif.
Tapez les commandes suivantes afin de créer un groupe mysql et
un utilisateur mysql :
# groupadd mysql
# useradd -g mysql mysql
Le choix du nom du groupe et de l'utilisateur restent à votre discrétion.
Ainsi, si vous préférez mygrp et myusr, la commande
à taper sera :
# groupadd mygrp
# useradd -g mygrp myusr
Remarque : sur une Slackware 8.0, même si le package MySQL n'a pas été installé, l'utilisateur mysql et le groupe mysql existent déjà. Cela ne pose pas de problème, mais dans le fichier /etc/passwd, dans la ligne correspondant à mysql, il faut remplacer /var/lib/mysql par /usr/local/mysql.
Ceci fait, décompactez les sources de MySQL et placez-vous dans le répertoire
de travail :
# tar xvfz mysql-3.23.43.tar.gz
# cd mysql-3.23.43
Les possibilités de préconfiguration de MySQL sont vastes. Nous
allons donc vous en présenter certaines qui devraient vous permettre
de déterminer lesquelles utiliser en fonction de vos besoins.
--prefix=répertoire : répertoire sera le répertoire
principal de MySQL, les composants seront placés dans des sous-répertoires
(bin, share, etc.).
--localstatedir=répertoire : les bases de données et les
journaux (logs) seront placés dans le répertoire répertoire
(sur un disque de données séparé par exemple).
--without-debug : MySQL ne sera pas compilé pour produire des
informations de débogage. Cette option est à sélectionner
pour un serveur de production.
--enable-assembler : lors de la compilation, des fonctions de manipulation
de chaînes de caractères en assembleur seront utilisées.
--with-client-ldflags=-all-static : les outils client de MySQL (mysql,
mysqladmin) seront compilés de façon à ne pas utiliser
les librairies dynamiques. Les binaires générés seront
plus gros, mais les applications seront plus rapides.
--with-mysqld-ldflags=-all-static : le moteur MySQL (mysqld) sera compilé
de façon à ne pas utiliser les librairies dynamiques. Le binaire
généré sera plus gros, mais l'application sera plus rapide.
--disable-shared : seules les versions statiques des librairies de MySQL
seront générées.
Nous proposons de faire la préconfiguration avec la commande suivante
:
# ./configure \
--prefix=/usr/local/mysql-3.23.43 \
--localstatedir=/data/mysql \
--without-debug \
--enable-assembler \
--with-mysqld-ldflags=-all-static
N.B. : les backslashes en fin de ligne permettent, en tapant sur la touche
"Entrée", de continuer la saisie de la commande à la ligne suivante
et non pas de la valider.
Lancez ensuite la compilation puis l'installation par les commandes suivantes
:
# make
# make install
Pour plus de simplicité ultérieurement, nous vous suggérons
de créer un lien symbolique nommé mysql vers le répertoire
d'installation de MySQL :
# ln -s /usr/local/mysql-3.23.43 /usr/local/mysql
Ainsi, toute référence à la version de MySQL est occultée,
ce qui est plus souple et plus évolutif.
Les outils MySQL utilisant les librairies dynamiques, il est nécessaire
de configurer le gestionnaire de librairies dynamiques afin qu'il connaisse
l'emplacement de ces librairies.
Pour ce faire, tapez la commande suivante :
# echo /usr/local/mysql/lib/mysql >> /etc/ld.so.conf
Procédez ensuite à la mise à jour du cache des librairies
:
# ldconfig
# sync
La vérification du bon paramétrage se fera par la commande suivante
:
# ldconfig -v | grep mysql
Le résultat devant être :
/usr/local/mysql/lib/mysql:
libmysqlclient.so.10 -> libmysqlclient.so.10.0.0
L'étape suivante consiste à créer les tables système
(utile uniquement si MySQL n'a jamais été installé) :
# scripts/mysql_install_db
Lancez les commandes suivantes pour donner les droits sur répertoires
de MySQL aux utilisateurs fictifs créés précédemment
:
# chown -R root /usr/local/mysql/
# chown -R mysql /data/mysql
# chgrp -R mysql /usr/local/mysql/
# chgrp -R mysql /data/mysql
Le "/" à la fin des commandes portant sur le répertoire
/usr/local/mysql est important car il permet que le traitement s'opère
sur le répertoire pointé par le lien mysql et non le lien
lui-même.
Copiez ensuite le fichier de configuration à sa place :
# cp support-files/my-medium.cnf /etc/my.cnf
Si vous disposez de 512 Mo à 1 Go de mémoire, utilisez le fichier
my-large.cnf. Si vous disposez de plus d'1 Go de mémoire, utilisez le
fichier my-huge.cnf.
Editez le fichier /etc/my.cnf et ajoutez la ligne suivante dans la section [mysqld]
: user = mysql
Ceci permet de spécifier au démon MySQL de tourner avec les droits
de l'utilisateur mysql sans avoir à le spécifier sur la
ligne de commande.
Une astuce pour gagner en performance : utilisez la commande Unix strip
qui retire d'un binaire les symboles utilisés lors de l'édition
de lien. Le plus utile est de l'exécuter sur mysqld, le démon
MySQL :
# strip /usr/local/mysql/libexec/mysqld
Vous pouvez enfin démarrer le démon MySQL par la commande suivante
:
# /usr/local/mysql/bin/safe_mysqld &
Si tout fonctionne bien, MySQL devrait démarrer et vous afficher un message
indiquant le répertoire utilisé pour stocker les données
(/data/mysql dans notre cas). Pour vérfier si le démon mysqld
tourne, utiliser la commande suivante :
# ps | grep mysql
Le résultat devrait ressembler à ceci : 13653 pts/0 00:00:00 safe_mysqld
Vous pouvez également lancer quelques commandes de test :
# /usr/local/mysql/bin/mysqladmin version
# /usr/local/mysql/bin/mysqladmin variables
# /usr/local/mysql/bin/mysqlshow
# /usr/local/mysql/bin/mysqlshow mysql
# /usr/local/mysql/bin/mysql -e "select host,db,user from db"
mysql
Lors de son exécution, le script mysql_install_db vous suggère
vivement de saisir un mot de passe pour l'utilisateur root de MySQL.
Cet utilisateur dispose de tous les privilèges sur les tables systèmes
donc ce conseil est bon à suivre.
Vous pouvez le faire par les commandes suivantes :
# /usr/local/mysql/bin/mysqladmin -u root password 'lenouveaumotdepasse'
Pour que le démon MySQL démarre et s'arrête automatiquement,
vous pouvez utiliser le fichier mysq.server.
Attention, la méthode suivante s'applique à une distribution Slackware.
Copiez-le dans le répertoire contenant les scripts de démarrage
:
# cp support-files/mysql.server /etc/rc.d
Appliquez des droits en exécution :
# chmod 755 /etc/rc.d/mysql.server
Editez le fichier rc.local et ajoutez les lignes suivantes :
# Demarrage MySQL.
if [ -x /etc/rc.d/mysql.server ]; then
. /etc/rc.d/mysql.server start
fi
|