Blog Mestre

Le Blog d'un tonton flingueur du net

Compilation, installation et parametrage de MySql

Le WEB aujourd’hui étant dynamique, la majorité des serveurs WEB utilisent une base de données (en plus d’un langage de scripts coté serveur tel que PHP ou PERL ) pour générer les pages HTML à la demande. Le plus célèbre système de gestion de bases de données pour le WEB est sans contexte MySQL. Cet article explique comment compiler MySQL Serveur et/ou MySQL Client à partir des sources et les paramétrer.

Pré-requis

  • Un utilitaire de décompression de fichiers (GNU gunzip)
  • Un utilitaire tar pour dépaquetter l’archive (GNU tar)
  • Un compilateur ANSI C++ (par example g++)
  • Le compilateur bison (version GNU de la commande yacc)
  • Les programmes make et cmake

Si l’un de ces outils est manquant, vous pouvez l’installer facilement à l’aide des utilitaires apt-get sous Débian (ou yum sous Fedora).
Nous avons choisi la version 5.5.8 disponible à l’adresse
http://dev.mysql.com/get/Downloads/MySQL-5.5/mysql-5.5.8.tar.gz/from/http://mirrors.ircam.fr/pub/mysql/

Préparation de l’installation

Avec l’apparition de la branche 5.5 de MySQL, la procédure de compilation fait désormai appel à cmake (http://www.cmake.org) et non plus à GNU autotools, ce qui change légèrement les options de compilation. Sans les passer toutes en revue, nous allons juste détailler celles qui nous semblent les plus importantes :

  • -DCMAKE_INSTALL_PREFIX=/un/chemin/de/dossier définit le chemin d’installation de MySQL (par défaut /usr/local/mysql)
  • -DMYSQL_DATADIR=/un/chemin/de/dossier définit le chemin d’installation des bases de données MySQL (par défaut /usr/local/mysql/data)
  • -DMYSQL_UNIX_ADDR=/un/chemin/de/dossier définit le chemin ou stocker le socket MySQL (par défaut /tmp/mysql.sock)
  • -DWITH_DEBUG=booléen activer ou désactiver les informations de déboggage
  • -DMYSQL_MAINTAINER_MODE=booléen si activé les avertissement de compilation deviennent des erreurs
  • -DENABLED_PROFILING=booléen active ou désactive le profilage (instructions SHOW PROFILE et SHOW PROFILES).
  • -DDEFAULT_CHARSET=charset permet de choisir le jeu de caratères (par défaut le “charset” est latin1)
  • -DWITH_xxx_STORAGE_ENGINE=booléen MySQL Serveur est compilé en incluant statiquement le moteur de base de données xxx
  • -DWITHOUT_xxx_STORAGE_ENGINE=booléen MySQL Serveur est compilé en excluant le moteur de base de données xxx

Si aucune des options WITH_xxx_STORAGE_ENGINE et WITHOUT_xxx_STORAGE_ENGINE n’est précisée pour un moteur de stockage donné, celui-ci sera construit comme un module partagé ou exclu si ce n’est pas possible. Les moteurs MYISAM, MERGE, MEMORY et CSV sont systématiquement compilés statiquement.

Avec cmake, lorsque vous voulez effecteur une nouvelle compilation, vous devez au préalable exécuter les commandes suivantes afin d’effacer les paramètres de configuration enregistrés :

shell> rm CMakeCache.txt
shell> make clean

Pour compiler MySQL en incluant statiquement le moteur InnoDB, en utilisant le jeu de caractères utf8 par défaut et en authorisant le profilage de code :

Préparation de la compilation de Mysql :

cmake . -DWITH_INNOBASE_STORAGE_ENGINE=1 -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DENABLED_PROFILING=ON -DMYSQL_MAINTAINER_MODE=OFF -DWITH_DEBUG=OFF

 

Récupération des sources et installation

L’archive des sources MySQL sera téléchargée dans le dossier /usr/local/src et MySQL sera installé dans le dossier /usr/local/mysql-5.5.8.Il nous faudra ensuite créer un goupe mysql et un utilisateur mysql. Nous pourrons alors configurer les sources et les compiler :

Compilation MySQL Serveur

shell> cd /usr/local/src
shell> wget -O mysql-5.5.8.tar.gz http://dev.mysql.com/get/Downloads/MySQL-5.5/mysql-5.5.8.tar.gz/from/http://mirrors.ircam.fr/pub/mysql/
shell> groupadd mysql
shell> useradd -g mysql mysql
shell> tar -xvzf mysql-5.5.8.tar.gz
shell> cd mysql-5.5.8
shell> cmake . -DENABLED_PROFILING=ON -DMYSQL_MAINTAINER_MODE=OFF -DWITH_DEBUG=OFF -DMYSQL_DATADIR=/usr/local/mysql-5.5.8/var/ -DCMAKE_INSTALL_PREFIX=/usr/local/mysql-5.5.8
shell> make
shell> make install

Pour l’installation de MySQL Client seul, la commande de compilation devient “make mysqlclient libmysql” (correspond à l’option ./configure –without-serveur de l’ancienne procédure d’installation avec autotools)

Le reste du tutoriel concerne uniquement l’installation de MySQL Server.

Lors de l’extraction de l’archive l’installation de MySQL, un répertoire /usr/local/src/mysql-5.5.8 /support-files est créé, et contient plusieurs exemples de fichiers my.cnf (fichier de configuration de MySQL) : my-huge.cnf, my-large.cnf, my-medium.cnf et my-small.cnf. Vous pouvez les utiliser comme base pour paramétrer votre système :

  • my-small.cnf : Utilisez ce fichier de configuration si votre serveur dispose de 64Mo ou moins de mémoire et si mysql est peu utilisé.
  • my-medium.cnf : Utilisez ce fichier de configuration si votre serveur dispose de 32 à 64Mo de mémoire et mysql joue un rôle important ou si votre serveur dispose de 128Mo de mémoire et mysql fonctionne avec un serveur WEB.
  • my-large.cnf : Utilisez ce fichier de configuration si votre serveur dispose de 512Mo.
  • my-huge.cnf : Utilisez ce fichier de configuration si votre serveur dispose de de 1 à 2Go.

Nous choisissons my-large.cnf et nous le copions dans /etc/my.cnf et nous terminerons l’installation de MySQL en executant le script mysql_install_db en précisant l’utilisateur unix exécutant MySQL et éventuellement le chemin d’installations des bases de données (par habitude, j’ai fixé ce chemin à /usr/local/mysql-5.5.8/var), avant de créer les liens symboliques et de consigner les chemins d’accès aux librairies dynamiques MySQL :

Installation de MySQL :

Shell> cp support-files/my-large.cnf /etc/my.cnf
Shell> chmod +x scripts/mysql_install_db
Shell> scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql-5.5.8 --datadir=/usr/local/mysql-5.5.8/var
Shell> echo /usr/local/mysql-5.5.8/bin/mysql >> /etc/ld.so.conf
Shell> ldconfig

Nous allons maintenant affecter le groupe mysql et l’utilisateur mysql au système de fichier de MySQL.

Affectation des droits mysql sur le système de fichier MySQL :

Shell> cd /usr/local/mysql-5.5.8
Shell> chown -R root *
Shell> chown -R mysql var
Shell> chgrp -R mysql *

Nous pouvons désormais créer le script de démarrage de MySQL (avec les bons droits d’éxécution) et indiquer au système linux de lancer MySQL au démarrage du serveur.

Configuration du démarrage automatique de MySQL :

Shell> cp /usr/local/src/mysql-5.5.8/support-files/mysql.server /etc/init.d/mysqld
Shell> chmod +x /etc/init.d/mysqld
Shell> update-rc.d mysqld defaults 20    (sous Debian)
Shell> chkconfig --add mysqld     (sous fedora)

MySQL Serveur est installé ! Nous pouvons le démarer et l’arrêter avec les commandes suivantes :

Démarrage et arrêt de MySQL :

Shell> /etc/init.d/mysqld start
Shell> /etc/init.d/mysqld stop

Opérations de post-installation

Nous n’en avons pas encore terminé ! Il nous faut maintenant démarrer MySQL Serveur en mode ligne de commande et nous y connecter pour créer les premiers droits d’accès en fixant le mot de passe et les privilèges de l’utilisateur root et en supprimant les comptes anonymes par mesure de sécurité.
remplacez “motdepasse” et “hostname” par vos propres valeurs.

Création des premiers droits et privilèges MySQL :

Shell> /etc/init.d/mysqld start
Shell> /usr/local/mysql-5.5.8/bin/mysql -u root
mysql> DELETE FROM mysql.user WHERE User = '';
mysql> FLUSH PRIVILEGES;
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('motdepasse');
mysql> SET PASSWORD FOR 'root'@'hostname' = PASSWORD('motdepasse');
mysql> UPDATE mysql.user SET Password = PASSWORD('motdepasse')
           ->  WHERE User = 'root';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost'
           ->  IDENTIFIED BY 'motdepasse' WITH GRANT OPTION;

Si vous ne connaissez pas votre hostname, vous le trouverez dans le fichier /etc/hostname
Dans le cas ou vous souhaitez que votre serveur MySQL soit accessible par un serveur distant (par exemple dans le cas ou votre serveur WEB et votre serveur MySQL sont installés sur des machines différentes) vous pouvez ajouter un accès et des privilèges root distants.

Droits et privilèges root MySQL pour un serveur distant :

mysql> INSERT INTO mysql.user (User,Host) VALUE ('root','%');
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'
           ->   IDENTIFIED BY 'motdepasse' WITH GRANT OPTION;
mysql> quit
Shell> /etc/init.d/mysqld stop
Shell> /etc/init.d/mysqld start

C’est terminé, MySQL est installé et prêt à être utilisé !

Catégorie : Tutoriels
Mot-Clé :
  • Samuel a dit :

    Merci pour cet article ultra complet, je vais essayer de l’appliquer entierement, cela sera je pense tres formateur ! j’ai bcp de lacune en mysql !

    22/07/2012 à 17:21

Votre adresse email ne sera pas publiée. Champs requis marqués avec *

*