Go to the first, previous, next, last section, table of contents.


2 Installation de MySQL

Ce chapitre décrit comment obtenir et installer MySQL :

2.1 Installation standard rapide de MySQL

2.1.1 Installer MySQL sous Linux

Il est recommandé d'installer MySQL sous Linux en utilisant un fichier RPM. Les RPM de MySQL sont actuellement compilé sur une RedHAt en version 6.2, mais devraient fonctionner sur toute autre version de Linux qui supporte rpm et utilise glibc.

Si vous avez des problèmes avec un fichier RPM, si vous obtenez par exemple l'erreur ``Sorry, the host 'xxxx' could not be looked up'', référez vous à section 2.6.1.1 Notes relatives à Linux pour les distributions binaires.

Les fichiers RPM dont vous pourriez avoir besoin sont :

Pour voir tous les fichiers présents dans un paquet RPM, lancez :

shell> rpm -qpl MySQL-VERSION.i386.rpm

Pour effectuer une installation standard minimale, lancez :

shell> rpm -i MySQL-VERSION.i386.rpm MySQL-client-VERSION.i386.rpm

Pour installer uniquement le paquet du client MySQL, lancez :

shell> rpm -i MySQL-client-VERSION.i386.rpm

Le fichier RPM place les données dans `/var/lib/mysql'. Le RPM crée aussi les entrées appropriées dans `/etc/rc.d/' pour lancer le serveur automatiquement au démarrage. (Cela signifie que, si vous avez déjà effectué une installation auparavant, vous pouvez avoir besoin de faire une sauvegarde de vos fichiers de démarrage précédents si vous les changez, de façon à ne pas les perdre.)

Après l'installation des fichiers RPM, le démon mysqld devrait fonctionner et vous devriez être capables de commencer à utiliser MySQL. See section 2.4 Configuration après l'installation, et tests.

Si quelque chose se passe mal, vous pouvez trouver davantage d'informations dans le chapitre d'installation des binaires. See section 2.2.11 Installer MySQL à partir d'une distribution binaire.

2.1.2 Installer MySQL sous Windows

Le serveur MySQL pour Windows est disponible sous deux formes :

  1. La forme binaire contient un programme de configuration qui installe tout ce dont vous avez besoin de telle façon que vous puissiez démarrer le serveur immédiatement.
  2. La distribution sous forme de code source contient tout le code et les fichiers de support nécessaires à la compilation des exécutables en utilisant le compilateur VC++ 6.0. See section 2.3.7 La distribution source Windows.

En règle générale, vous devriez utiliser la distribution binaire.

Vous aurez besoin des choses suivantes :

2.1.2.1 Installation des binaires

  1. Si vous travaillez avec les serveurs NT/2000/XP, loguez-vous en utilisateur avec les permissions d'administrateur.
  2. Si vous faites une mise à jour d'une version plus récente de MySQL, il est nécessaire d'arrêter le serveur. Si vous utilisez le serveur en tant que service, utilisez :
    C:\> NET STOP MySQL
    
    Dans les autres cas, utilisez :
    C:\mysql\bin> mysqladmin -u root shutdown
    
  3. Avec les serveurs NT/2000/XP, si vous voulez changer l'exécutable du serveur (e.g., -max or -nt), il est aussi nécessaire de stopper le service :
    C:\mysql\bin> mysqld-max-nt --remove
    
  4. Dézipper les fichiers dans un emplacement temporaire.
  5. Exécutez le fichier `setup.exe' pour commencer l'installation. Si vous voulez l'installer à un autre emplacement que celui pas défaut `c:\mysql', utilisez le bouton Parcourir pour spécifier un emplacement.
  6. Terminer le processus d'installation.

2.1.2.2 Préparation de l'environnement MySQL de Windows

A partir de la version 3.23.38 de MySQL, la distribution Windows inclut le binaire du serveur normal et le binaire du serveur MySQL-Max. Voici une liste des différents serveurs MySQL que vous pouvez utiliser :

Binaire Description
mysqld Compilé avec débogage total et vérification automatique de l'allocation de mémoire, liens symboliques, tables InnoDB et BDB.
mysqld-opt Binaire optimisé sans le support des tables transactionnelles.
mysqld-nt Binaire optimisé pour NT/2000/XP sans support des tunnels nommés. Vous pouvez faire fonctionner cette version sur Windows 9x/Me, mais dans ce cas, les tunnels nommés ne sont pas crées et vous devez avoir TCP/IP installé.
mysqld-max Binaire optimisé avec support des liens symboliques et des tables InnoDB et BDB.
mysqld-max-nt Comme mysqld-max, mais compilé avec le support des tunnels nommés.

A partir de la version 3.23.50, les tunnels nommés ne sont activés que si on démarre mysqld avec --enable-named-pipe.

Tous les binaires précédents sont optimisés pour le processeur Pentium Pro mais devraient fonctionner avec n'importe quel processeur Intel >= i386.

Vous devrez utiliser un fichiers d'options pour spécifier votre configuration MySQL dans les circonstances suivantes :

Normalement, vous pouvez utiliser l'outil WinMySQLAdmin pour éditer le fichier d'options my.ini. Dans ce cas, vous n'avez pas à vous soucier de ce qui suit.

Il y a deux fichiers d'options avec la même fonction : `my.cnf' et `my.ini'. Toutefois, pour éviter la confusion, il est préférable de n'en utiliser qu'un seul. Les deux fichiers sont en texte plein. Le fichier `my.cnf', si utilisé, doit être crée dans le répertoire racine du lecteur C. Le fichier `my.ini', si utilisé, doit être crée dans le répertoire système de Windows. (Ce répertoire est souvent nommé `C:\WINDOWS' ou `C:\WINNT'. Vous pouvez déterminer sa valeur exacte en regardant la valeur de la variable d'environnement windir.) MySQL regarde en premier le fichier my.ini, puis le fichier `my.cnf'.

Si votre PC utilise un système de boot ou le lecteur C n'est pas le lecteur de boot, votre seule option est d'utiliser le fichier `my.ini'. Notez aussi que si vous utilisez l'outil WinMySQLAdmin, celui-ci n'utilisera que le fichier `my.ini'. Le répertoire `\mysql\bin' contient un fichier d'aide avec les instruction pour utiliser cet outil.

En utilisant notepad.exe, créez le fichier d'options et éditez la section [mysqld] pour spécifier les valeurs des paramètres basedir et datadir :

[mysqld]
# set basedir to installation path, e.g., c:/mysql
basedir=le_dossier_d'installation
# set datadir to location of data directory,
# e.g., c:/mysql/data or d:/mydata/data
datadir=le_dossier_des_données

Notez que les chemins de Windows doivent être spécifiés dans les fichiers d'options en utilisant des slashes normaux (/) au lieu des backslashes (\). Si vous utilisez des backslashes, vous devez les doubler.

Si vous voulez utiliser un répertoires de données autre que `c:\mysql\data', vous devez copier le contenu entier du dossier `c:\mysql\data' au nouvel endroit.

Si vous voulez utiliser les tables transactionnelles InnoDB, vous aurez besoin de créer manuellement deux nouveaux répertoires pour contenir les les données et les logs InnoDB, `c:\ibdata' et `c:\iblogs'. Vous aurez aussi besoin d'ajouter quelques lignes supplémentaires dans le fichier d'options. See section 7.5.2 Options de démarrage InnoDB.

Si vous ne voulez pas utiliser les tables InnoDB, ajoutez l'option skip-innodb au fichier d'options.

Maintenant, vous pouvez commencer à tester le démarrage du serveur.

2.1.2.3 Démarrer le serveur pour la première fois

Tester à partir d'une console DOS est la meilleure chose à faire car le serveur affiche des messages qui y apparaissent. Si quelque chose n'est pas bon dans votre configuration, ces messages vous aiderons à identifier et corriger le problème.

Assurez-vous d'être dans le répertoire où se situe le serveur, puis entrez cette commande :

C:\mysql\bin> mysqld-max --standalone

Vous devriez voir ce qui suit pendant le démarrage du serveur :

InnoDB: The first specified datafile c:\ibdata\ibdata1 did not exist:
InnoDB: a new database to be created!
InnoDB: Setting file c:\ibdata\ibdata1 size to 209715200
InnoDB: Database physically writes the file full: wait...
InnoDB: Log file c:\iblogs\ib_logfile0 did not exist: new to be created
InnoDB: Setting log file c:\iblogs\ib_logfile0 size to 31457280
InnoDB: Log file c:\iblogs\ib_logfile1 did not exist: new to be created
InnoDB: Setting log file c:\iblogs\ib_logfile1 size to 31457280
InnoDB: Log file c:\iblogs\ib_logfile2 did not exist: new to be created
InnoDB: Setting log file c:\iblogs\ib_logfile2 size to 31457280
InnoDB: Doublewrite buffer not found: creating new
InnoDB: Doublewrite buffer created
InnoDB: creating foreign key constraint system tables
InnoDB: foreign key constraint system tables created
011024 10:58:25  InnoDB: Started

Pour plus d'informations à propos du démarrage de MySQL sous Windows, voyez section 2.6.2 Notes relatives à Windows.

2.1.3 Installer MySQL sur Mac OS X

Depuis MySQL 4.0.11, vous pouvez installer MySQL sur Mac OS X 10.2 ("Jaguar") avec le package binaire Mac OS X PKG au lieu d'utiliser la distribution binaire compressée. Notez que les anciennes versions de Mac OS X (i.e. 10.1.x) ne sont pas supportées par ce package.

Le package est situé dans une image disque (.dmg), que vous devez monter en double-cliquant son icône sur le Finder. Le disque devrait alors se monter, et afficher son contenu.

NOTE: Avant de lancer l'installation, assurez vous qu'il n'y a pas de serveur MySQL en fonctionnement!

Arrêtez tous les serveurs MySQL avant de continuer, soit en utilisant l'application manager (pour les serveurs Mac OS X) ou via mysqladmin shutdown en ligne de commande.

Pour installer le package MySQL, double-cliquez sur l'icône. Cela va lancer l'installeur de package MacOSX, qui vous guidera durant l'installation.

Le package Mac OS X de MySQL va s'installer lui-même dans le dossier `/usr/local/mysql-<version>' et va aussi installer un lien symbolique `/usr/local/mysql', pointant sur la nouvelle installation. Si un dossier appelé `/usr/local/mysql' existe déjà, il sera renommé en `/usr/local/mysql.bak'. De plus, il va installer les tables de droits MySQL en exécutant le script mysql_install_db après l'installation.

Le schéma d'installation est semblable à celui de la distribution binaire, tous les programmes MySQL sont situés dans le dossier `/usr/local/mysql/bin'. Les sockets MySQL sont installées dans le fichier `/etc/mysql.sock' par défaut. See section 2.2.7 Dispositions d'installation.

L'installation requiert un compte nommé mysql (qui existe par défaut en Mac OS X 10.2 et plus récent).

Si vous utilisez Mac OS X Server, vous devez avoir déjà une version de MySQL installée :

Cette section du manuel couvre l'installation du package binaire MySQL pour Mac OS X uniquement. Assurez vous de bien lire l'aide d'Apple concernant l'installation de MySQL (Lancer le visualiseur d'aid, sélectionnez la rubrique "Serveur Mac OS X", et faites une recherche sur "MySQL", puis lisez l'entrée appelée "Installing MySQL").

Notez bien que la version pré-installée de MySQL sur Mac OS X Server peut être lancée avec la commande safe_mysqld au lieu de mysqld_safe!

Si vous avez utilisé auparavant les packages MySQL de Marc Liyanage pour Mac OS X, depuis le site de http://www.entropy.ch, vous pouvez simplement suivre le process de mise à jour, en utilisant les conseils de ses pages.

Si vous faites une mise à jour depuis les versions de Marc, ou depuis une ancienne version de MySQL pour Mac OS X Server, avec le nouveau package officiel, vous devrez convertir les tables de droits. See section 2.5.3 Passer de la version 3.23 à la version 4.0.

Après cette installation, vous opuvez lancer le serveur MySQL avec ces commandes, exécutées dans terminal. Notez bien que vous devez avoir des droits d'administrateur pour cela!

shell> cd /usr/local/mysql
shell> sudo ./bin/mysqld_safe
(Enter your password)
(Press CTRL+Z)
shell> bg
(Press CTRL+D to exit the shell)

Vous devez alors être capable de vous connecter au serveur MySQL, notamment en exécutant la commande `/usr/local/mysql/bin/mysql'.

Pour activer automatiquement le démarrage de MySQL au lancement du serveur, vous pouvez télécharger l'utilitaire de démarrage de Marc Liyanage sur sont site :

http://www2.entropy.ch/download/mysql-startupitem.pkg.tar.gz

Nous avons prévu d'ajouter une application de démarrage à la distribution officielle prochainement.

Notez que l'installation d'un nouveau package MySQL ne supprimer pas le dossier d'une vieille installation : l'installeur de Mac OS X n'offre pas encore les fonctionnaltés nécessaires pour mettre à jour proprement une vieille version. Après avoir copié les fichiers de bases depuis votre ancien dossier vers le nouveau, et que vous avez réussi à redémarrer MySAL avec la nouvelle version, vous devriez pensez à supprimer les vieilles versions des fichiers, situées dans `/Library/Receipts/mysql-<version>.pkg'.

2.1.4 Installer MySQL sur NetWare

Depuis la version 4.0.11, le serveur MySQL est disponible sur Novell NetWare, en format binaire. Pour pouvoir héberger un serveur MySQL, un serveur NetWare doit avoir les pré-requis suivants :

Les exécutables binaires pour NetWare sont disponibles sur http://www.mysql.com/downloads/.

2.1.4.1 Installer les exécutables MySQL pour NetWare

  1. Si vous faites une mise à jour depuis une installation antérieure, arrêtez le serveur MySQL. Pour cela, faites :
    SERVER:  mysql -u root shutdown
    
  2. Connectez vous sur le serveur cible depuis une machine cliente, pour accéder au dossier où installer MySQL.
  3. Décompressez le fichier zip binaire sur le serveur. Assurez vous d'utiliser les chemins du fichiers zip. Il n'y a pas de problème à installer le fichier dans `SYS:\'. Si vous faites une mise à jour depuis une ancienne installation, vous devez copier les données (c'est à dire `SYS:MYSQL\DATA'), de même que le fichier `my.cnf', si vous l'avez personnalisé. Vous pouvez alors effacer l'ancienne copie de MySQL.
  4. Vous pouvez renommer le dossier avec un autre nom plus cohérent et facile à retenir. Nous vous recomandons d'utiliser `SYS:MYSQL'; les exemples suivants utiliserons ce nom pour se référner au dossier d'installation en général.
  5. Dans la console du serveur, ajoutez un chemin de recherche pour le dossier contenant les NLM de MySQL. Par exemple :
    SERVER:  SEARCH ADD SYS:MYSQL\BIN
    
  6. Installez la base initiale, si nécessaire, en utilisant le script mysql_install_db en ligne de commande.
  7. Démarrez le serveur MySQL en utilisant le script mysqld_safe dans la console.
  8. Pour finir l'installation, vous devriez aussi ajouter les commandes ci-dessus au fichier autoexec.ncf. Par exemple, si votre installation MySQL est dans le dossier `SYS:MYSQL', et que vous voulez que MySQL démarre automatiquement, vous pouvez utiliser ces lignes :
    #Démarre le serveur MySQL 4.0.x
    SEARCH ADD SYS:MYSQL\BIN
    MYSQLD_SAFE
    

Si il y avait une installation MySQL pré-éxistante, assurez vous de bien vérifier les commandes de démarrages dans autoexec.ncf, et de les adapter si nécessaire.

2.2 Notes générales à propos de l'installation

2.2.1 Comment obtenir MySQL ?

Visitez le site de MySQL (http://www.mysql.com/) pour des informations à propos de la version courante et les instructions de téléchargement.

Notre miroir principal est situé sur http://mirrors.sunsite.dk/mysql/.

Pour une liste complète et à jour des miroirs web/téléchargement de MySQL, voyez http://www.mysql.com/downloads/mirrors.html. Vous trouverez là des informations à propos des futurs miroirs et de quoi nous informer de la non-validité de l'un d'entre eux.

2.2.2 Vérifier l'intégrité des paquets avec MD5 ou GnuPG

Une fois que vous avez téléchargé le paquet MySQL qui vous convient, et avant de l'installer, vous devriez vous assrurer qu'il est intact, et n'a pas été altéré.

MySQL AB propose deux moyens de vérifier l'intégrité : les sommes de contrôles MD5 et les signatures de GnuPG, de GNU Privacy Guard.

2.2.3 Verifying the MD5 Checksum

Une fois que vous avez téléchargé le paquet, vous devez vérifier si la somme de contrôle MD5 correspond à celle qui est disponibles sur le site de MySQL. Chaque package a une somme de contrôle individuelle, que vous pouez obtenir avec la commande suivante :

shell> md5sum <package>

Notez que tous les systèmes d'exploitation ne supportent pas la commande md5sum : sur certains, elle s'appelle simplement md5, sur d'autre, elle n'est pas du tout disponible. Sur Linux, ella fait partie des utilitaires textes GNU (GNU Text Utilities), qui sont disponbiles pour toute une gamme de plate-formes. Vous pouvez télécharger le code source sur le site http://www.gnu.org/software/textutils/. Si vous avez installé OpenSSL, vous pouvez utiliser la commande openssl md5 <package> à la place. Une implémentation DOS/Windows de la commande md5 est disponible sur le site http://www.fourmilab.ch/md5/.

Exemple :

shell> md5sum mysql-standard-4.0.10-gamma-pc-linux-i686.tar.gz
155836a7ed8c93aee6728a827a6aa153
                mysql-standard-4.0.10-gamma-pc-linux-i686.tar.gz

Ainsi, vous devez vérifier si la somme de contrôle résultante correspond à cette qui est imprimée sur la page de téléchargement, en dessous du paquet téléchargé.

La plupart des sites miroirs proposent aussi un fichier appelé `MD5SUMS', qui inclut les sommes de contrôle MD5 pour tous les fichiers disponibles dans le dossier `Downloads'. Notez bien qu'il est très facile de modifier ce fichier, et que ce n'est pas une méthode sécuritaire. Dans le doute, consultez différents mirroirs, et comparez les résultats.

2.2.4 Vérification de la signature avec GnuPG

Une méthode plus sûre pour vérifier l'intégrité d'un paquet est d'utiliser la signature. MySQL AB utilise GNU Privacy Guard (GnuPG), une alternative Open Source du très connu Pretty Good Privacy (PGP) par Phil Zimmermann. Voir http://www.gnupg.org/ et http://www.openpgp.org/ pour plus d'informations sur OpenPGP/GnuPG et comment obtenir et installer GnuPG sur votre système. La plupart des distributions Linux dispose d'une version de GnuPG installée par défaut.

Depuis MySQL 4.0.10 (Février 2003), MySQL AB signe les paquets en téléchargement avec GnuPG. Les signateurs chifféres représentent une méthode bien plus sûre pour vérifier l'intégrité et l'authenticitié d'un fichier.

Pour vérifier la signature d'un paquet spécifique, vous devez obtenir en premier lieu une copie de la clé publique GPG build@mysql.com. Vous pouvez soit la copier-coller directement depuis ce manuel, ou la réclamer sur le serveur http://www.keyserver.net/.

Key ID:
pub  1024D/5072E1F5 2003-02-03
     MySQL Package signing key (www.mysql.com) <build@mysql.com>
Fingerprint: A4A9 4068 76FC BD3C 4567  70C8 8C71 8D3B 5072 E1F5

Public Key (ASCII-armored):

-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.0.6 (GNU/Linux)
Comment: For info see http://www.gnupg.org

mQGiBD4+owwRBAC14GIfUfCyEDSIePvEW3SAFUdJBtoQHH/nJKZyQT7h9bPlUWC3
RODjQReyCITRrdwyrKUGku2FmeVGwn2u2WmDMNABLnpprWPkBdCk96+OmSLN9brZ
fw2vOUgCmYv2hW0hyDHuvYlQA/BThQoADgj8AW6/0Lo7V1W9/8VuHP0gQwCgvzV3
BqOxRznNCRCRxAuAuVztHRcEAJooQK1+iSiunZMYD1WufeXfshc57S/+yeJkegNW
hxwR9pRWVArNYJdDRT+rf2RUe3vpquKNQU/hnEIUHJRQqYHo8gTxvxXNQc7fJYLV
K2HtkrPbP72vwsEKMYhhr0eKCbtLGfls9krjJ6sBgACyP/Vb7hiPwxh6rDZ7ITnE
kYpXBACmWpP8NJTkamEnPCia2ZoOHODANwpUkP43I7jsDmgtobZX9qnrAXw+uNDI
QJEXM6FSbi0LLtZciNlYsafwAPEOMDKpMqAK6IyisNtPvaLd8lH0bPAnWqcyefep
rv0sxxqUEMcM3o7wwgfN83POkDasDbs3pjwPhxvhz6//62zQJ7Q7TXlTUUwgUGFj
a2FnZSBzaWduaW5nIGtleSAod3d3Lm15c3FsLmNvbSkgPGJ1aWxkQG15c3FsLmNv
bT6IXQQTEQIAHQUCPj6jDAUJCWYBgAULBwoDBAMVAwIDFgIBAheAAAoJEIxxjTtQ
cuH1cY4AnilUwTXn8MatQOiG0a/bPxrvK/gCAJ4oinSNZRYTnblChwFaazt7PF3q
zIhMBBMRAgAMBQI+PqPRBYMJZgC7AAoJEElQ4SqycpHyJOEAn1mxHijft00bKXvu
cSo/pECUmppiAJ41M9MRVj5VcdH/KN/KjRtW6tHFPYhMBBMRAgAMBQI+QoIDBYMJ
YiKJAAoJELb1zU3GuiQ/lpEAoIhpp6BozKI8p6eaabzF5MlJH58pAKCu/ROofK8J
Eg2aLos+5zEYrB/LsrkCDQQ+PqMdEAgA7+GJfxbMdY4wslPnjH9rF4N2qfWsEN/l
xaZoJYc3a6M02WCnHl6ahT2/tBK2w1QI4YFteR47gCvtgb6O1JHffOo2HfLmRDRi
Rjd1DTCHqeyX7CHhcghj/dNRlW2Z0l5QFEcmV9U0Vhp3aFfWC4Ujfs3LU+hkAWzE
7zaD5cH9J7yv/6xuZVw411x0h4UqsTcWMu0iM1BzELqX1DY7LwoPEb/O9Rkbf4fm
Le11EzIaCa4PqARXQZc4dhSinMt6K3X4BrRsKTfozBu74F47D8Ilbf5vSYHbuE5p
/1oIDznkg/p8kW+3FxuWrycciqFTcNz215yyX39LXFnlLzKUb/F5GwADBQf+Lwqq
a8CGrRfsOAJxim63CHfty5mUc5rUSnTslGYEIOCR1BeQauyPZbPDsDD9MZ1ZaSaf
anFvwFG6Llx9xkU7tzq+vKLoWkm4u5xf3vn55VjnSd1aQ9eQnUcXiL4cnBGoTbOW
I39EcyzgslzBdC++MPjcQTcA7p6JUVsP6oAB3FQWg54tuUo0Ec8bsM8b3Ev42Lmu
QT5NdKHGwHsXTPtl0klk4bQk4OajHsiy1BMahpT27jWjJlMiJc+IWJ0mghkKHt92
6s/ymfdf5HkdQ1cyvsz5tryVI3Fx78XeSYfQvuuwqp2H139pXGEkg0n6KdUOetdZ
Whe70YGNPw1yjWJT1IhMBBgRAgAMBQI+PqMdBQkJZgGAAAoJEIxxjTtQcuH17p4A
n3r1QpVC9yhnW2cSAjq+kr72GX0eAJ4295kl6NxYEuFApmr1+0uUq/SlsQ==
=YJkx
-----END PGP PUBLIC KEY BLOCK-----

Vous pouvez importer cette clé dans votre trousseau de clé publiques GPG avec la commande gpg --import. Voyez la documnetation GPG pour plus de détails sur comment travailler avec les clés publiques.

Une fois que vous avez téléchargé et importé la clé publique, vous pouvez télécharger le paquet MySQL et la signature qui lui est associée, sur la même page. Le fichier de signature a pour extension `.asc'. Par exemple, la signature pour le fichier `mysql-standard-4.0.10-gamma-pc-linux-i686.tar.gz' serait `mysql-standard-4.0.10-gamma-pc-linux-i686.tar.gz.asc'. Assurez vous que les deux fichiers sont stockés dans le même dossier, puis exécutez la commande suivante pour vérifier la signature du fichier :

shell> gpg --verify <package>.asc

Example:

shell> gpg --verify mysql-standard-4.0.10-gamma-pc-linux-i686.tar.gz.asc
gpg: Warning: using insecure memory!
gpg: Signature made Mon 03 Feb 2003 08:50:39 PM MET using DSA key ID 5072E1F5
gpg: Good signature from
     "MySQL Package signing key (www.mysql.com) <build@mysql.com>"

La mention "Good signature" (bonne signature) indique que le paquet est correct.

Pour les paquets RPM, il n'y a pas de signature séparée : les paquets RPM disposent d'une signature GPG intégrée, et d'une somme de contrôle MD5. Vous pouvez les vérifier avec la commande suivante :

shell> rpm --checksig <package>.rpm

Example:

shell> rpm --checksig MySQL-server-4.0.10-0.i386.rpm
MySQL-server-4.0.10-0.i386.rpm: md5 gpg OK

Note : Si vous utilisez RPM 4.1 et qu'il se plaint que (GPG) NOT OK (MISSING KEYS: GPG#5072e1f5) (même si vous l'avez importé dans votre trousseau de clé), vous devez alors importer la clé dans votre trousseau RPM d'abord. RPM 4.1 n'utilise pas votre trousseau de clé GPG (ni GPG lui-même), car il entretient son propre trousseau de clé (car c'est une application de niveau système, et que le trousseau de clé est spécifique à chaque utilisateur). Pour importer la clé publique MySQL dans votre trousseau de clé RPM, utilisez la commande suivante :

shell> rpm --import <pubkey>

Example:

shell> rpm --import mysql_pubkey.asc

Dans le cas où vous vous apercevez que la somme de contrôle MD5 checksum ou la signature GPG ne correspond pas, essayez de télécharger à nouveau le même paquet, éventuellement depuis un autre miroir. Si vous échouez plusieurs fois à vérifier l'intégrité du paquet, faites nous part de votre problème, en incluant le nom complet du paquet désiré, et les sites de téléchargement que vous avez utilisé. Mailez nous à l'adresse webmaster@mysql.com ou build@mysql.com.

2.2.5 Systèmes d'exploitation supportés par MySQL

Nous utilisons GNU Autoconf, alors il est possible de porter MySQL sur tous les systèmes modernes qui utilisent les threads Posix et un compilateur C++. Pour compiler uniquement le client, un compilateur C++ est simplement nécessaire. Nous utilisons et développons le logiciel nous-même, en commençant par Sun Solaris (Versions 2.5 - 2.7) et SuSE Linux version 7.x.

Notez que pour de nombreux systèmes d'exploitation, le support natif des threads ne fonctionne qu'avec les dernières versions. MySQL a été compilé avec succès sur les combinaisons système d'exploitation/package de threads suivants :

Notez que toutes les plate-formes ne sont pas équipées de la même façon pour faire fonctionner MySQL. Les capacités d'une plateforme pour supporter de fortes charges avec MySQL est déterminé par ceci :

En se basant sur les critères précédents, les meilleures plate-forme pour MySQL sont x86 avec SuSE Linux 7.1, 2.4 kernel, et ReiserFS (ou toute autre distribution Linux similaire) et SPARC avec Solaris 2.7 ou 2.8. FreeBSD vient en troisième, mais nous espérons bien le voir rejoindre le groupe de tête, une fois que la librairie de threads sera améliorée. Nous espérons aussi être bientôt capables d'ajouter les autres plate-formes sur laquelle MySQL compile, et fonctionne correctement, mais pas toujours le bon niveau de stabilité et de performances. Cela réclame des efforts de notre part, en coopération avec les développeurs de ces plate-formes. Si vous êtes interessés par l'amélioration de ces composants, et que vous êtes en position pour influencer le développement, demandez des instructions détaillées à MySQL en envoyant un email à internals@lists.mysql.com.

Notez bien que la comparaison précédente ne signifie pas qu'un système d'exploitation est meilleur que l'autre, en général. Nous avons classé les systèmes en fonction de leur capacité à faire fonctionner un système MySQL, et nous nous limitons à cette comparaison. Avec cela en tête, le résultat de cette comparaison serait différent si nous y ajoutions d'autres problèmes. Et dans certains cas, la seule raison qui fait qu'un OS est meilleur que l'autre est parce que nous y avons consacré plus de temps, pour optimiser et tester. Nous nous bornons à exprimer notre point de vue pour vous aider à décider quelle plate forme choisir pour votre serveur MySQL.

2.2.6 Quelle version de MySQL utiliser ?

La première décision à prendre est de savoir si vous voulez utiliser la dernière version de développement ou la dernière version stable :

La seconde décision est de déterminer si vous devez utiliser une distribution source ou binaire. Dans la plupart des cas, vous devrez utiliser une distribution binaire, si celle-ci existe pour votre plate-forme, car elle s'installera certainement plus facilement qu'une distribution source.

Dans les cas suivants, vous devrez opter pour une installation à partir des sources :

La politique de nommage de MySQL utilise des numéros de version qui consiste en trois nombres suivis d'un suffixe. Par exemple, une version nommée mysql-3.21.17-beta doit être interprétée de la façon suivante :

Toutes les versions de MySQL passent par nos tests et bancs d'essais standards pour nous assurer qu'elles peuvent être utilisées sans danger. Les séries de tests s'améliorent en permanence car les tests standards sont étendus dans le temps pour traquer tous les bogues précédemment trouvées.

Notez bien que toutes les versions de MySQL ont été testées au moins avec :

Une batterie de tests internes
C'est une reproduction d'un système de production client. Il comporte de nombreuses tables avec des centaines de Mo de données.
Les bancs de tests MySQL
Ils effectuent une série de requêtes communes. C'est aussi un test pour savoir si le dernier processus d'optimisation rend le code plus rapide. See section 5.1.4 La suite de tests MySQL.
Le test crash-me
Il tente de déterminer de quelles fonctionnalités disposent les bases de données et quelles en sont les limites. See section 5.1.4 La suite de tests MySQL.

Un autre test provient du fait que nous avons la version la plus récente de MySQL dans notre propre environnement de production interne, sur au moins une machine. Nous avons plus de 100 Go de données à manipuler.

2.2.7 Dispositions d'installation

Cette section décrit les répertoires par défaut crées en installant les distributions binaires et les distributions de sources.

Une distribution binaire est installée en la décompressant dans le répertoire d'installation que vous avec choisis (souvent `/usr/local/mysql') et crée les répertoires suivants à cet endroit :

Répertoire Contenu du répertoire
`bin' Programmes clients et le serveur mysqld
`data' Fichiers de log et bases de données
`include' Fichiers (entêtes) inclus
`lib' Librairies
`scripts' mysql_install_db
`share/mysql' Fichiers de messages d'erreurs
`sql-bench' Benchmarks

Une distribution des sources est installée après que vous l'ayez configuré et compilé. Par défaut, l'installation se fait dans `/usr/local', dans les sous-répertoires suivants :

Répertoire Contenu du répertoire
`bin' Programmes clients et scripts
`include/mysql' Fichiers (entêtes) inclus
`info' Documentation au format Info
`lib/mysql' Librairies
`libexec' Le serveur mysqld
`share/mysql' Fichiers de messages d'erreurs
`sql-bench' Benchmarks et test crash-me
`var' Fichiers de log et bases de données

Dans le répertoire d'installation, les dispositions d'une installation des sources diffère d'une installation binaire des façons suivantes :

Vous pouvez créer votre propre installation binaire à partir d'une distribution de sources compilées en exécutant le script `scripts/make_binary_distribution'.

2.2.8 Quand et comment sont publiées les nouvelles versions

MySQL évolue rapidement ici, à MySQL AB, et nous voulons le partager avec les autres utilisateurs de MySQL. Nous essayons de faire une nouvelle version à chaque fois que nous avons implanté des fonctionnalités qui seront utiles à d'autres.

Nous essayons aussi d'aider les utilisateurs dont les requêtes sont faciles à programmer. Nous prenons en considération tout ce que nos clients nous demandent, et nous accordons une attention particulière à nos clients qui ont pris une licence e-mail étendue.

Personne n'est obligé de télécharger une nouvelle version. La sections News vous indiquera si la nouvelle version contient une fonctionnalité que vous attendez. See section C Historique des changements MySQL.

Nous utilisons la politique suivante, lors de la mise à jour de MySQL :

La version stable actuelle est la version 3.23; nous avons déjà commencé à développer activement la version 4.0. Les bogues seront corrigés dans cette version. Nous ne croyons pas à un gel complet, car cela laisserait en plan des corrections de bogues, et des listes de souhaites. ``Un peu gelé'' signifie que nous pourrions apporter de petits ajouts qui ``n'affecterons pas presque sûrement pas le fonctionnement''.

MySQL utilise un système de numérotation légèrement différent pour les autres produits. En général, il est relativement sûr d'utiliser une version qui a été publiée il y a quelques semaines sans être remplacée par une nouvelle version. See section 2.2.6 Quelle version de MySQL utiliser ?.

2.2.9 Politique de publication : aucun bug connu dans les versions

Nous mettons beaucoup d'efforts et de temps à la publication de version sans bugs. A notre connaissance, nous n'avons jamais publié une version de MySQL qui contienne un bug fatal connu et reproductible.

Un bug fatal est un problème qui crashe MySQL en utilisation normal, fournit des réponses erronnées à des requêtes classiques, ou a des problèmes de sécurité.

Nous documentons tous les problèmes ouverts, bugs et tout ce qui dépend des choix de conceptions. See section 1.8.5 Erreurs connues, et limitations de MySQL.

Nous avons pour but de corriger tout ce qui est corrigeable, sans risquer la stabilité des versions de MySQL. Dans certains cas, cela signifie que nous pouvons corriger une erreur dans la version de développement, mais pas dans la version stable. Naturellement, nous documentons ces problèmes, pour que les utilisateurs soient avertis.

Voici une description de notre processus de publication :

2.2.10 Binaires compilés par MySQL AB

Comme service, nous, MySQL AB, proposons un jeu de distributions binaires de MySQL qui sont compilés sur nos machines, ou les machines auxquelles nos clients nous ont gentiment donné accès.

Ces distributions sont générées avec le script scripts/make_binary_distribution et sont configurés avec les compilateurs et options suivantes :

Linux 2.4.xx i386 with gcc 2.95.3
CFLAGS="-O2 -mcpu=pentiumpro" CXX=gcc CXXFLAGS="-O2 -mcpu=pentiumpro -felide-constructors" ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --enable-assembler --disable-shared --with-client-ldflags=-all-static --with-mysqld-ldflags=-all-static
Linux 2.4.xx Intel Itanium 2 with ecc (Intel C++ Itanium Compiler 7.0)
CC=ecc CFLAGS="-O2 -tpp2 -ip -nolib_inline" CXX=ecc CXXFLAGS="-O2 -tpp2 -ip -nolib_inline" ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile
Linux 2.4.xx Intel Itanium with ecc (Intel C++ Itanium Compiler 7.0)
CC=ecc CFLAGS=-tpp1 CXX=ecc CXXFLAGS=-tpp1 ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile
Linux 2.4.xx alpha with ccc (Compaq C V6.2-505 / Compaq C++ V6.3-006)
CC=ccc CFLAGS="-fast -arch generic" CXX=cxx CXXFLAGS="-fast -arch generic -noexceptions -nortti" ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --with-mysqld-ldflags=-non_shared --with-client-ldflags=-non_shared --disable-shared
Linux 2.2.xx sparc with egcs 1.1.2
CC=gcc CFLAGS="-O3 -fno-omit-frame-pointer" CXX=gcc CXXFLAGS="-O3 -fno-omit-frame-pointer -felide-constructors -fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --enable-assembler --disable-shared
Linux 2.4.xx s390 with gcc 2.95.3
CFLAGS="-O2" CXX=gcc CXXFLAGS="-O2 -felide-constructors" ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --disable-shared --with-client-ldflags=-all-static --with-mysqld-ldflags=-all-static
Sun Solaris 2.8 sparc with gcc 3.2
CC=gcc CFLAGS="-O3 -fno-omit-frame-pointer" CXX=gcc CXXFLAGS="-O3 -fno-omit-frame-pointer -felide-constructors -fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --enable-assembler --with-named-z-libs=no --with-named-curses-libs=-lcurses --disable-shared
Sun Solaris 2.9 sparc with gcc 2.95.3
CC=gcc CFLAGS="-O3 -fno-omit-frame-pointer" CXX=gcc CXXFLAGS="-O3 -fno-omit-frame-pointer -felide-constructors -fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --enable-assembler --with-named-curses-libs=-lcurses --disable-shared
Sun Solaris 2.9 sparc with cc-5.0 (Sun Forte 5.0)
CC=cc-5.0 CXX=CC ASFLAGS="-xarch=v9" CFLAGS="-Xa -xstrconst -mt -D_FORTEC_ -xarch=v9" CXXFLAGS="-noex -mt -D_FORTEC_ -xarch=v9" ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --enable-assembler --with-named-z-libs=no --enable-thread-safe-client --disable-shared
IBM AIX 4.3.2 ppc with gcc 3.2.1
CFLAGS="-O2 -mcpu=powerpc -Wa,-many " CXX=gcc CXXFLAGS="-O2 -mcpu=powerpc -Wa,-many -felide-constructors -fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --with-named-z-libs=no --disable-shared
IBM AIX 5.1.0 ppc with gcc 3.2.1
CFLAGS="-O2 -mcpu=powerpc -Wa,-many" CXX=gcc CXXFLAGS="-O2 -mcpu=powerpc -Wa,-many -felide-constructors -fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --with-server-suffix="-pro" --enable-thread-safe-client --enable-local-infile --with-named-z-libs=no --disable-shared --with-innodb
HP-UX 10.20 pa-risc1.1 with gcc 3.1
CFLAGS="-DHPUX -I/opt/dce/include -O3 -fPIC" CXX=gcc CXXFLAGS="-DHPUX -I/opt/dce /include -felide-constructors -fno-exceptions -fno-rtti -O3 -fPIC" ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --with-pthread --with-named-thread-libs=-ldce --with-lib-ccflags=-fPIC --disable-shared
HP-UX 11.11 pa-risc2.0 with aCC (HP ANSI C++ B3910B A.03.33)
CC=cc CXX=aCC CFLAGS=+DD64 CXXFLAGS=+DD64 ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --disable-shared
Apple Mac OS X 10.2 powerpc with gcc 3.1
CC=gcc CFLAGS="-O3 -fno-omit-frame-pointer" CXX=gcc CXXFLAGS="-O3 -fno-omit-frame-pointer -felide-constructors -fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --disable-shared
FreeBSD 4.7 i386 with gcc 2.95.4
CFLAGS=-DHAVE_BROKEN_REALPATH ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --enable-assembler --with-named-z-libs=not-used --disable-shared

Les paquets binaires suivants sont compilŽs sur des systmes que des tiers prtent gracieusement ˆ MySQL AB. Notez que ces paquets sont fournis gracieusement. Comme MySQL AB n'a pas le contr™le complet sur ces systmes, nous ne pouvons proposer qu'un support limitŽ sur ces systmes.

SCO Unix 3.2v5.0.6 i386 with gcc 2.95.3
CFLAGS="-O3 -mpentium" LDFLAGS=-static CXX=gcc CXXFLAGS="-O3 -mpentium -felide-constructors" ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --with-named-z-libs=no --enable-thread-safe-client --disable-shared
Caldera Open Unix 8.0.0 i386 with CC 3.2
CC=cc CFLAGS="-O" CXX=CC ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --with-named-z-libs=no --enable-thread-safe-client --disable-shared
Compaq Tru64 OSF/1 V5.1 732 alpha with cc/cxx (Compaq C V6.3-029i / DIGITAL C++ V6.1-027)
CC="cc -pthread" CFLAGS="-O4 -ansi_alias -ansi_args -fast -inline speed -speculate all" CXX="cxx -pthread" CXXFLAGS="-O4 -ansi_alias -fast -inline speed -speculate all -noexceptions -nortti" ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --with-prefix=/usr/local/mysql --with-named-thread-libs="-lpthread -lmach -lexc -lc" --disable-shared --with-mysqld-ldflags=-all-static
SGI Irix 6.5 IP32 with gcc 3.0.1
CC=gcc CFLAGS="-O3 -fno-omit-frame-pointer" CXXFLAGS="-O3 -fno-omit-frame-pointer -felide-constructors -fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --disable-shared

Les options suivantes de compilations ont ŽtŽ utilisŽes pour les paquets binaires de MySQL, qui Žtaient fournis auparavant. Ces paquets ne sont plus mis ˆ jours, mais les options de compilation sont conservŽes ici pour mŽmoire.

Linux 2.2.x with x686 with gcc 2.95.2
CFLAGS="-O3 -mpentiumpro" CXX=gcc CXXFLAGS="-O3 -mpentiumpro -felide-constructors -fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql --enable-assembler --with-mysqld-ldflags=-all-static --disable-shared --with-extra-charsets=complex
SunOS 4.1.4 2 sun4c with gcc 2.7.2.1
CC=gcc CXX=gcc CXXFLAGS="-O3 -felide-constructors" ./configure --prefix=/usr/local/mysql --disable-shared --with-extra-charsets=complex --enable-assembler
SunOS 5.5.1 (and above) sun4u with egcs 1.0.3a or 2.90.27 or gcc 2.95.2 and newer
CC=gcc CFLAGS="-O3" CXX=gcc CXXFLAGS="-O3 -felide-constructors -fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql --with-low-memory --with-extra-charsets=complex --enable-assembler
SunOS 5.6 i86pc with gcc 2.8.1
CC=gcc CXX=gcc CXXFLAGS=-O3 ./configure --prefix=/usr/local/mysql --with-low-memory --with-extra-charsets=complex
BSDI BSD/OS 3.1 i386 with gcc 2.7.2.1
CC=gcc CXX=gcc CXXFLAGS=-O ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex
BSDI BSD/OS 2.1 i386 with gcc 2.7.2
CC=gcc CXX=gcc CXXFLAGS=-O3 ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex
AIX 2 4 with gcc 2.7.2.2
CC=gcc CXX=gcc CXXFLAGS=-O3 ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex

Si vous avez des options plus optimales pour l'une des configurations précédement listées, vous pouvez toujours nous en faire part sur la liste de distribution des développeurs (internals@lists.mysql.com).

Les distributions RPM antérieures à la version 3.22 de MySQL sont contribuées par nos utilisateurs. A partir de la version 3.22, les RPM sont générés par nous chez MySQL AB.

Si vous voulez compiler une version de débogage de MySQL, vous devez ajouter --with-debug ou --with-debug=full aux lignes de configurations précédentes et effacer les options -fomit-frame-pointer.

Pour les distributions Windows, voyez section 2.1.2 Installer MySQL sous Windows.

2.2.11 Installer MySQL à partir d'une distribution binaire

Vous pouvez aussi vous référer à section 2.1.2.1 Installation des binaires, section 2.1.1 Installer MySQL sous Linux, et section 8.4.13 Compiler les clients.

Vous aurez besoin des outils suivants pour installer les binaires MySQL :

L'utilisation de fichiers RPM (RedHat Package Manager) est une autre façon d'installer MySQL sous Linux. See section 2.1.1 Installer MySQL sous Linux.

Si vous rencontrez des problèmes, utilisez toujours mysqlbug pour poster des questions à mysql@lists.mysql.com. Même si le problème n'est pas un bogue, mysqlbug rassemble des informations sur le système qui aidera les autres à résoudre votre problème. En n'utilisant pas mysqlbug, vous amoindrissez vos chances d'obtenir une solution à votre problème ! Vous trouverez mysqlbug dans le répertoire `scripts' après avoir désarchivé la distribution. See section 1.7.1.3 Comment rapporter un bogue ou un problème.

Les commandes de base que vous devez lancer pour installer et utiliser MySQL à partir des binaires sont les suivantes :

shell> groupadd mysql
shell> useradd -g mysql mysql
shell> cd /usr/local
shell> gunzip < /path/to/mysql-VERSION-OS.tar.gz | tar xvf -
shell> ln -s full-path-to-mysql-VERSION-OS mysql
shell> cd mysql
shell> scripts/mysql_install_db
shell> chown -R root  .
shell> chown -R mysql data
shell> chgrp -R mysql .
shell> bin/safe_mysqld --user=mysql &
or
shell> bin/mysqld_safe --user=mysql &
si vous utilisez MySQL 4.x

Vous pouvez ajouter des nouveaux utilisateurs en utilisant le script bin/mysql_setpermission si vous installez les modules Perl DBI et Msql-Mysql-modules.

Une description plus détaillée est disponible ci-dessous.

Pour installer une distribution binaire, suivez ces étapes et procédez à section 2.4 Configuration après l'installation, et tests, pour la configuration et les tests consécutifs à l'installation :

  1. Choisissez le répertoire ou vous voulez désarchiver la distribution et déplacez-vous y. Dans l'exemple suivant, nous désarchivons la distribution dans le répertoire `/usr/local' et créons un répertoire `/usr/local/mysql' dans lequel MySQL est installé. (Les instructions suivantes supposent bien sûr que vous avez les autorisations suffisantes pour créer des fichiers dans `/usr/local'. Si ce répertoire est protégé, vous aurez besoin de faire l'installation en tant que root.)
  2. Procurez-vous un fichier de distribution à partir d'un des sites cités dans section 2.2.1 Comment obtenir MySQL ?. Les distributions binaires de MySQL sont fournies sous forme d'archives tar compressées et ont des noms de la forme `mysql-VERSION-OS.tar.gz', où VERSION est un nombre (par exemple, 3.21.15), et OS indique le type de système d'exploitation pour lequel la distribution est compilée (par exemple, pc-linux-gnu-i586).
  3. Si vous voyez une distribution binaire avec le suffixe -max, cela signifie que le binaire supporte les tables avec les transactions ainsi que d'autres fonctionnalités. See section 4.7.5 mysqld-max, la version étendue du serveur mysqld. Veuillez noter que tous les binaires sont compilés à partir du même code source.
  4. Ajoutez un utilisateur et un groupe avec les droits desquels mysqld fonctionnera :
    shell> groupadd mysql
    shell> useradd -g mysql mysql
    
    Ces commandes ajoutent le groupe mysql group et l'utilisateur mysql. La syntaxe de useradd et de groupadd peut varier de façon significative suivant les versions d'Unix. Elles peuvent aussi s'appeler adduser et addgroup. Vous pouvez aussi souhaiter nommer le groupe et l'utilisateur autrement que mysql.
  5. Déplacez-vous dans le répertoire d'installation choisi :
    shell> cd /usr/local
    
  6. Décompressez la distribution et créez le répertoire d'installation :
    shell> gunzip < /chemin/de/mysql-VERSION-OS.tar.gz | tar xvf -
    shell> ln -s chemin-complet-de-mysql-VERSION-OS mysql
    
    La première commande crée un répertoire `mysql-VERSION-OS'. La seconde commande crée un lien symbolique vers ce répertoire. Cela vous permet de vous référer plus facilement au répertoire d'installation en appelant `/usr/local/mysql'.
  7. Déplacez vous dans le répertoire d'installation :
    shell> cd mysql
    
    Vous y trouverez de nombreux fichiers et sous-répertoires. Les plus importants lors de l'installation sont les sous-répertoires `bin' et `scripts'.
    `bin'
    Ce répertoire contient les programmes clients ainsi que le serveur. Vous devriez ajouter le chemin complet de ce répertoire à votre variable d'environnement PATH de telle façon que votre interpréteur de commandes trouve les programmes facilement. See section E Variables d'environnement.
    `scripts'
    Ce répertoire contient le script mysql_install_db utilisé pour initialiser la base de données mysql contenant les tables de privilèges servant à gérer les permissions d'accès au serveur.
  8. Si vous souhaitez utiliser mysqlaccess et placer la distribution MySQL à un endroit non standard, vous devez changer l'endroit où mysqlaccess s'attend à trouver le client mysql. Editez le script `bin/mysqlaccess' aux environs de la ligne 18. Cherchez une ligne qui ressemble à ceci :
    $MYSQL     = '/usr/local/bin/mysql';    # path to mysql executable
    
    Changez le chemin pour avoir le bon endroit où mysql est actuellement stocké sur votre système. Si vous ne le faites pas, vous obtiendrez une erreur Broken pipe quand vous lancerez mysqlaccess.
  9. Créez les tables de privilèges MySQL (ceci est nécessaire si vous n'avez jamais installé MySQL auparavant) :
    shell> scripts/mysql_install_db
    
    Veuillez noter que les versions de MySQL antérieures à la version 3.22.10 démarraient le serveur MySQL quand vous exécutiez mysql_install_db. Ce n'est plus le cas.
  10. Nommez root en tant que propriétaire des binaires et l'utilisateur avec les droits duquel vous ferez fonctionner mysqld comme propriétaire du répertoire de données :
    shell> chown -R root  /usr/local/mysql
    shell> chown -R mysql /usr/local/mysql/var
    shell> chgrp -R mysql /usr/local/mysql
    
    La première commande change les attributs owner en faveur de l'utilisateur root, la seconde change les attributs owner du répertoire de données en faveur de l'utilisateur mysql, et la troisième change les attributs group en faveur du groupe mysql.
  11. Si vous voulez installer le support de l'interface Perl DBI/DBD, référez-vous à section 2.7 Commentaires sur l'installation de Perl.
  12. Si vous souhaitez que MySQL se lance automatiquement au démarrage de votre machine, vous pouvez copier support-files/mysql.server à l'endroit où votre système stocke ses fichiers de démarrage. Davantage d'informations sont disponibles dans le script support-files/mysql.server lui-même et dans section 2.4.3 Lancer et arrêter MySQL automatiquement..

Après que tout soit installé, vous devez initialiser et tester votre distribution :

shell> /usr/local/mysql/bin/safe_mysqld --user=mysql &

Procédez maintenant à section 4.7.2 safe_mysqld, le script père de mysqld, et à la See section 2.4 Configuration après l'installation, et tests.

2.3 Installer MySQL à partir des sources

Avant de procéder à l'installation à partir des sources, vérifiez auparavant que notre distribution binaire pour votre plate-forme ne fonctionne pas. Nous faisons un maximum d'efforts pour nous assurer que nos binaires sont compilés avec les meilleures options possibles.

Vous avez besoin des outils suivants pour compiler et installer MySQL à partir des sources :

Si vous utilisez une version récente de gcc, suffisamment récente pour reconnaître l'option -fno-exceptions, il est très important que vous l'utilisiez. Sinon, vous risquez de compiler un binaire qui crashe aléatoirement. Nous recommandons donc l'utilisation de -felide-constructors et -fno-rtti en même temps que -fno-exceptions. En cas de doute, faites la chose suivante :


CFLAGS="-O3" CXX=gcc CXXFLAGS="-O3 -felide-constructors -fno-exceptions \
       -fno-rtti" ./configure --prefix=/usr/local/mysql --enable-assembler \
       --with-mysqld-ldflags=-all-static

Sur la plupart des systèmes, il en résultera un binaire rapide et stable.

Si vous rencontrez des problèmes, utilisez toujours mysqlbug pour poster des questions à mysql@lists.mysql.com. Même si le problème n'est pas un bogue, mysqlbug rassemble des informations sur le système qui aidera les autres à résoudre votre problème. En n'utilisant pas mysqlbug, vous amoindrissez vos chances d'obtenir une solution à votre problème ! Vous trouverez mysqlbug dans le répertoire `scripts' après avoir désarchivé la distribution. See section 1.7.1.3 Comment rapporter un bogue ou un problème.

2.3.1 Vue d'ensemble de l'installation rapide

Les commandes de base que vous devez exécuter pour installer MySQL à partir des sources sont :

shell> groupadd mysql
shell> useradd -g mysql mysql
shell> gunzip < mysql-VERSION.tar.gz | tar -xvf -
shell> cd mysql-VERSION
shell> ./configure --prefix=/usr/local/mysql
shell> make
shell> make install
shell> scripts/mysql_install_db
shell> chown -R root  /usr/local/mysql
shell> chown -R mysql /usr/local/mysql/var
shell> chgrp -R mysql /usr/local/mysql
shell> cp support-files/my-medium.cnf /etc/my.cnf
shell> /usr/local/mysql/bin/safe_mysqld --user=mysql &
ou
shell> /usr/local/mysql/bin/mysqld_safe --user=mysql &
si vous utilisez MySQL 4.x.

Si vous voulez avoir le support des tables InnoDB, vous devez éditer le fichier /etc/my.cnf et enlever le caractère # avant le paramètre qui commence par innodb_.... See section 4.1.2 Fichier d'options `my.cnf', et section 7.5.2 Options de démarrage InnoDB.

Si vous utilisez un fichier RPM source, faites :

shell> rpm --rebuild MySQL-VERSION.src.rpm

Cela produira un fichier RPM binaire que vous pourrez installer.

Vous pouvez ajouter des utilisateurs en lançant le script bin/mysql_setpermission si vous installez les modules Perl DBI et Msql-Mysql-modules.

Ci-dessous, une description plus détaillée.

Pour installer MySQL à partir des sources, suivez ces étapes et procédez à section 2.4 Configuration après l'installation, et tests, pour la configuration et les tests consécutifs à l'installation :

  1. Notez le répertoire où vous voulez décompacter les sources et déplacez vous y.
  2. Récupérez une distribution des sources à partir d'un des sites listés sur section 2.2.1 Comment obtenir MySQL ?.
  3. Si vous souhaitez utiliser les tables Berkeley DB avec MySQL, vous devez obtenir une version modifiée du code source de Berkeley DB. Veuillez lire le chapitre relatif aux tables Berkeley DB avant de procéder. See section 7.6 Tables BDB ou BerkeleyDB. Les distributions des sources MySQL sont fournies sous forme d'archive tar compressées et ont des noms comme `mysql-VERSION.tar.gz', où VERSION est un nombre comme 5.0.0-alpha.
  4. Ajoutez un utilisateur et un groupe avec les droits desquels mysqld fonctionnera :
    shell> groupadd mysql
    shell> useradd -g mysql mysql
    
    Ces commandes ajoutent le groupe mysql group et l'utilisateur mysql. La syntaxe de useradd et de groupadd peut varier de façon significative suivant les versions d'Unix. Elles peuvent aussi s'appeler adduser et addgroup. Vous pouvez aussi souhaiter nommer le groupe et l'utilisateur autrement que mysql.
  5. Décompressez la distribution dans le répertoire courant :
    shell> gunzip < /path/to/mysql-VERSION.tar.gz | tar xvf -
    
    Cette commande crée un répertoire nommé `mysql-VERSION'.
  6. Déplacez-vous dans le répertoire racine de la distrbution décompressée :
    shell> cd mysql-VERSION
    
    Notez bien que vous devez alors configurer et compiler MySQL depuis ce répertoire racine. Vous ne pouvez pas le compiler à partir d'un autre répertoire.
  7. Configurez votre version et compilez tout :
    shell> ./configure --prefix=/usr/local/mysql
    shell> make
    
    Quand vous lancez la commande configure, vous pouvez spécifier quelques options. Lancez ./configure --help pour une liste des options disponibles. La partie section 2.3.3 Options habituelles de configure, traite des options les plus utiles. Si configure échoue, et que vous êtes sur le point d'envoyer un mail à mysql@lists.mysql.com pour demander de l'aide, ajoutez s'il vous plait les quelques lignes de `config.log' qui pourraient selon vous aider à résoudre le problème. Ajoutez aussi les deux dernières lignes de sortie de configure si configure s'arrête précipitemment. Envoyez le rapport de bogue en utilisant le script mysqlbug. See section 1.7.1.3 Comment rapporter un bogue ou un problème. Si la compilation échoue, référez-vous à section 2.3.5 Problèmes de compilation? pour de l'aide sur les problèmes les plus courants.
  8. Installez tout :
    shell> make install
    
    Vous aurez certainement besoin de lancer cette commande en tant que root.
  9. Créez les tables de gestion des droits MySQL (ceci est nécessaire uniquement si vous n'avez pas installé MySQL auparavant):
    shell> scripts/mysql_install_db
    
    Veuillez noter que les versions de MySQL antérieures à la version 3.22.10 démarraient le serveur MySQL quand vous exécutiez mysql_install_db. Ce n'est plus le cas!
  10. Nommez root en tant que propriétaire des binaires et l'utilisateur avec les droits duquel vous ferez fontionner mysqld comme propriétaire du répertoire de données :
    shell> chown -R root  /usr/local/mysql
    shell> chown -R mysql /usr/local/mysql/var
    shell> chgrp -R mysql /usr/local/mysql
    
    La première commande change les attributs owner en faveur de l'utilisateur root, la seconde change les attributs owner du répertoire de données en faveur de l'utilisateur mysql, et la troisième change les attributs group en faveur du groupe mysql.
  11. Si vous voulez installer le support de l'interface Perl DBI/DBD, référez-vous à section 2.7 Commentaires sur l'installation de Perl.
  12. Si vous souhaitez que MySQL se lance automatiquement au démarrage de votre machine, vous pouvez copier support-files/mysql.server à l'endroit où votre système stocke ses fichiers de démarrage. Davantage d'informations sont disponibles dans le script support-files/mysql.server lui-même et dans section 2.4.3 Lancer et arrêter MySQL automatiquement..

Après que tout soit installé, vous devez initialiser et tester votre distribution :

shell> /usr/local/mysql/bin/safe_mysqld --user=mysql &

Si cette commande échoue immédiatement sur un mysqld daemon ended, vous pouvez trouvez des informations dans le fichier `mysql-data-directory/'hostname'.err'. La raison la plus courante est que vous avez déjà un autre serveur mysqld qui fonctionne. See section 4.1.4 Faire fonctionner plusieurs serveurs MySQL sur la même machine.

Procédez maintenant à la section 2.4 Configuration après l'installation, et tests.

2.3.2 Appliquer des patches

Parfois, des patches sont publiés sur la liste de diffusion ou sont placés sur la page des patches sur le site de MySQL (http://www.mysql.com/downloads/patches.html).

Pour appliquer un patch venant de la liste de diffusion, sauvegardez le message qui contient le patch, placez-le dans le répertoire racine de vos sources MySQL et lancez les commandes suivantes :

shell> patch -p1 < patch-file-name
shell> rm config.cache
shell> make clean

Les patches venant du site FTP sont distribués sous forme de fichiers en texte clair ou bien sous forme de fichiers compressés avec gzip. Appliquez un patch en texte clair de la même façon qu'avec les patches de la liste de diffusion. Pour appliquer un patch compressé, déplacez-vous dans le répertoire racine de vos sources et lancez les commandes suivantes :

shell> gunzip < patch-file-name.gz | patch -p1
shell> rm config.cache
shell> make clean

Après avoir appliqué un patch, suivez les instructions d'une installation normale à partir des sources, à commencer par l'étape du ./configure. Après avoir lancé le make install, redémarrez votre serveur MySQL.

Vous aurez certainement besoin d'arrêter tout autre serveur MySQL avant de lancer make install. (Utilisez pour cela mysqladmin shutdown.) Certains systèmes n'autorisent pas l'installation d'une nouvelle version d'un programme ; elle remplace la version qui est en train de s'exécuter.

2.3.3 Options habituelles de configure

Le script configure vous donne un bon moyen de contrôler la configuration de votre distribution MySQL. Habituellement, vous faites cela en spécifiant les options dans la ligne de commande de configure. Vous pouvez aussi affecter le comportement de configure en utilisant certaines variables d'environnement. See section E Variables d'environnement. Pour une liste des options supportées par configure, exécutez cette commande :

shell> ./configure --help

Les options de configure les plus utilisées sont décrites ici :

2.3.4 Installer à partir de l'arbre source de développement

Attention : Vous devez lire cette partie seulement si vous voulez nous aider à tester notre nouveau code. Si vous souhaitez seulement faire fonctionner MySQL sur votre système, vous devriez utiliser la distribution d'une version standard (que ce soit une distribution sous forme de sources ou de binaire).

Pour obtenir notre arbre source de développement le plus réent, suivez les instructions suivantes :

  1. Téléchargez BitKeeper à partir de http://www.bitmover.com/cgi-bin/download.cgi. Vous aurez besoin de Bitkeeper 2.0 ou supérieur pour accéder à notre dépôt.
  2. Suivez les instructions pour l'installer.
  3. Après avoir installé BitKeeper, commencez par vous déplacer dans le répertoire à partir duquel vous voulez travailler, et lancez l'une des commandes suivantes pour dupliquer la branche MySQL de votre choix : Pour dupliquer la branche 3.23, utilisez cette commande :
    shell> bk clone bk://work.mysql.com:7000 mysql-3.23
    
    Pour dupliquer la branche 4.0, utilisez cette commande :
    shell> bk clone bk://work.mysql.com:7001 mysql-4.0
    
    Pour dupliquer la branche 4.1, utilisez cette commande :
    shell> bk clone bk://work.mysql.com:7004 mysql-4.1
    
    Dans les exemples précédents, l'arbre source sera déposé dans les sous-répertoires `mysql-3.23/', `mysql-4.0/', ou `mysql-4.1/' de votre répertoire courant. Le premier téléchargement de l'arbre source peut prendre un certain temps, selon la vitesse de votre connexion. Soyez patients.
  4. Vous aurez besoin de GNU autoconf 2.52, de automake 1.5, de libtool 1.4, et de m4 pour lancer la prochaine série de commandes.
    shell> cd mysql-4.0
    shell> bk -r get -Sq
    shell> aclocal; autoheader; autoconf;  automake;
    shell> ./configure  # Ajoutez ici vos options favorites
    shell> make
    
    Si vous obtenez des erreurs étranges pendant cette étape, vérifiez bien que vous avez vraiment installé libtool! Une collection de nos scripts de configuration les plus courants de trouve dans le sous-répertoire `BUILD/'. Si vous êtes fainéants, vous pouvez utiliser `BUILD/compile-pentium-debug'. Pour compiler sur une architecture différente, modifiez ce script en enlevant les drapeaux spécifiques au Pentium.
  5. Quand la compilation est achevée, lancez make install. Prenez garde sur des machines de production. Cette commande pourrait écraser votre installation actuelle. Si vous avez une autre installation de MySQL, nous vous recommandons de lancer ./configure avec des valeurs des options prefix, with-tcp-port, et unix-socket-path différentes de celles de votre serveur de production.
  6. Torturez votre nouvelle installation et tentez de faire planter les nouvelles fonctionnalités. Commencez par lancer make test. See section 9.1.2 Suite de test de MySQL.
  7. Si vous avez échoué avec l'étape make et que la distribution ne compile pas, envoyez un rapport de l'incident à bugs@lists.mysql.com. Si vous avez installé la dernière version des indispensables outils GNU, et qu'ils échouent dans l'analyse de vos fichiers de configuration, envoyez aussi un rapport. D'autre part, si vous exécutez aclocal et que vous obtenez l'erreur command not found ou un problème du même type, n'envoyez pas de rapport. A la place, assurez vous que les outils nécessaires sont bien installés et que votre variable PATH est configurée de telle façon que votre interpréteur de commandes les trouvent.
  8. Après la première opération bk clone pour obtenir l'arbre source, vous devez lancer régulièrement bk pull pour obtenir les mises à jour.
  9. Vous pouvez examiner l'historique des changements de l'arbre avec toutes les différences en utilisant bk sccstool. Si vous apercevez des différences anormales ou sur lesquelles vous avez des questions, n'hésitez pas à envoyer un e-mail à internals@lists.mysql.com. De même, si vous pensez avoir une meilleure méthode pour traiter un problème, envoyez un e-mail accompagné d'un patch à la même adresse. bk diffs vous fournira un patch après que vous ayez fait vos changements aux sources. Si vous n'avez pas le temps de coder votre idée, envoyez en juste une description.
  10. BitKeeper dispose d'une aide agréable à laquelle vous pouvez accéder via bk helptool.
  11. Veuillez noter que chaque commit (bk ci ou bk citool) postera un message avec un aperçu des changements à notre liste de diffusion interne, à la façon habituelle des propositions openlogging.org avec seulement les commentaires des changements. Généralement, vous n'aurez pas besoin d'utiliser commit (l'arbre public interdisant les bk push), mais plutôt d'utiliser la méthode bk diffs décrite plus haut.

2.3.5 Problèmes de compilation?

Tous les programmes MySQL compilent proprement chez nous, sans aucune alerte sur Solaris avec gcc. Sur d'autres systèmes, des alertes peuvent apparaître à cause de différences dans le système d'inclusions. Voyez section 2.3.6 Notes relatives aux MIT-pthreads pour les alertes qui peuvent apparaître avec MIT-pthreads. Pour d'autres problèmes, voyez la liste suivante.

La solution à de nombreux problèmes implique une reconfiguration. Si vous avez besoin de faire une reconfiguration voici quelques conseils généraux :

Pour éviter d'utiliser de vieilles informations de configuration, ou des vieux fichiers d'objet, vous pouvez utiliser ces commandes, avant configure :

shell> rm config.cache
shell> make clean

Alternativement, vous pouvez aussi utiliser make distclean.

La liste suivante décrit certains problèmes lors de la compilation de MySQL, qui surviennent souvent :

2.3.6 Notes relatives aux MIT-pthreads

Cette section décrit quelques informations concernant l'utilisation des MIT-pthreads.

Notez que sur Linux vous ne devez pas utiliser les MIT-pthreads mais installer LinuxThreads ! See section 2.6.1 Notes relatives à Linux (toutes versions).

Si votre système ne fournit pas un support natif des threads, vous aurez besoin de construire MySQL en utilisant le package des MIT-pthreads. Cela inclut les anciens systèmes FreeBSD, SunOS 4.x, Solaris 2.4 et plus ancien, et quelques autres systèmes. See section 2.2.5 Systèmes d'exploitation supportés par MySQL.

Notez qu'à partir de la version 4.0.2 de MySQL les MIT-pthreads ne font plus partie de la distribution des sources ! si vous avez besoin de ce package, vous pouvez l'obtenir sur http://www.mysql.com/Downloads/Contrib/pthreads-1_60_beta6-mysql.tar.gz

Après l'avoir récupéré, décompressez l'archive dans le répertoire racine de votre répertoire des sources de MySQL. Cela créera le répertoire mit-pthreads.

2.3.7 La distribution source Windows

Vous aurez besoin de :

Compiler MySQL

  1. Créez un répertoire de travail (par exemple, workdir)
  2. Décompressez la distribution source dans ce répertoire.
  3. Lancez le compilateur VC++ 6.0.
  4. Dans le menu Fichier, sélectionnez Ouvrir un espace de travail.
  5. Ouvrez l'espace de travail `mysql.dsw' que vous trouverez dans le répertoire de travail.
  6. Dans le menu Générer, sélectionnez le menu Choisir la configuration active.
  7. Choisissez mysqld - Win32 Debug puis cliquez sur OK.
  8. Appuyez sur F7 pour commencer à compiler le serveur de débogage, les bibliothèques, et quelques applications clientes.
  9. Quand la compilation est terminée, copiez les bibliothèques et les exécutables dans un répertoire séparé.
  10. Compilez les versions que vous souhaitez de la même manière.
  11. Créez le répertoire pour les outils MySQL : par exemple, `c:\mysql'
  12. A partir du répertoire workdir, copiez les répertoires suivants dans c:\mysql :
  13. Créez le répertoire `c:\mysql\bin' et copier toutes les applications serveur et client compilées auparavant.
  14. Si vous le souhaitez, vous pouvez aussi créer le répertoire `lib' et y copier les librairies compilées auparavant.
  15. Faites un nettoyage en utilisant Visual Studio.

Configurez et lancez le serveur de la même façon que la distribution binaire Windows. See section 2.1.2.2 Préparation de l'environnement MySQL de Windows.

2.4 Configuration après l'installation, et tests

Une fois que vous avez installé MySQL (que ce soit avec les sources ou avec la distribution binaire), vous devez initialiser les tables de droits, démarrer le serveur et vous assurer que tout fonctionne bien. Vous pouvez aussi vouloir configurer le démarrage et l'extinction automatique du serveur.

Normalement, vous installez les tables de droits et démarrez le serveur comme ceci, pour une distribution source :

shell> ./scripts/mysql_install_db
shell> cd mysql_installation_directory
shell> ./bin/safe_mysqld --user=mysql &

Pour une distribution binaire (pas un RPM ou un package), faites ceci :

shell> cd mysql_installation_directory
shell> ./bin/mysql_install_db
shell> ./bin/safe_mysqld --user=mysql &

Cela crée la base mysql qui va contenir tous les droits, ainsi que la base test, que vous pouvez utiliser pour tester MySQL, ainsi que les droits pour l'utilisateur qui fait fonctionner mysql_install_db et un utilisateur root (sans mots de passe). Cela va aussi démarrer le serveur mysqld.

mysql_install_db ne va pas écraser d'anciens droits installé, et il peut être utilisé en toutes circonstances. Si vous ne voulez pas de base test, vous pouvez la supprimer avec la commande mysqladmin -u root drop test.

Les tests sont plus facilement exécuté depuis le niveau supérieur de la distribution MySQL. Pour la distribution binaire, c'est votre dossier d'installation (typiquement, `/usr/local/mysql'). Pour une distribution source, c'est le dossier principal de votre dossier source MySQL.

Dans les commandes présentées dans cette section et dans les sous sections suivantes, BINDIR est le chemin jusqu'au programmes binaires de la distribution, comme mysqladmin et safe_mysqld. Pour une distribution binaire, il s'agit du dossier `bin' dans la distribution. Pour une distribution source, BINDIR vaut sûrement `/usr/local/bin', à moins que vous ne spécifiez un dossier d'installation différent que `/usr/local' avec le script configure. EXECDIR est le chemin jusqu'au serveur mysqld. Pour une distribution binaire, c'est la même valeur que BINDIR. Pour une distribution source, EXECDIR est probablement `/usr/local/libexec'.

Les tests sont décrits en détails :

  1. Si besoin, démarrez le serveur mysqld et modifiez les tables initiales de droits de MySQL qui contiennent les privilèges qui déterminent les droits de connexion des utilisateurs au serveur. Cela se fait normalement avec le script mysql_install_db :
    shell> scripts/mysql_install_db
    
    Typiquement, mysql_install_db doit être exécuté uniquement lors de votre première installation de MySQL. Par conséquent, si vous faites évoluer une installation, vous pouvez éviter cette étape. Cependant, mysql_install_db est tout à fait sécuritaire, et vous ne modifiera pas des tables existants, alors dans le doute, vous pouvez toujours utiliser mysql_install_db. mysql_install_db crée six tables (user, db, host, tables_priv, columns_priv, and func) dans la base mysql database. Une description des droits initiaux est proposé dans la section section 4.3.4 Création des premiers droits MySQL. En bref, ces droits permettront au root MySQL de faire ce qu'il souhaite, et notamment, d'autoriser la création et l'utilisation de la base test ou dont le nom commence par test_. Si vous ne configurez pas les tables de droits, l'erreur suivante va apparaître dans le fichier de log, au démarrage du serveur :
    mysqld: Can't find file: 'host.frm'
    
    Cela peut aussi arriver avec la distribution binaire de MySQL, si vous ne démarrez pas MySQL exactement avec ./bin/safe_mysqld! See section 4.7.2 safe_mysqld, le script père de mysqld. Vous pouvez avoir besoin d'exécuter mysql_install_db en tant que root. Toutefois, si vous pouvez exécuter le serveur MySQL en tant qu'utilisateur avec peu de droits (non-root), tant que cet utilisateur a les droits de lecture et d'écriture dans le dossier de données. Les instructions pour faire fonctionner MySQL avec un autre utilisateur sont données dans le chapitre section A.3.2 Comment exécuter MySQL comme un utilisateur normal. Si vous avez des problèmes avec mysql_install_db, voyez section 2.4.1 Problèmes d'exécution de mysql_install_db. Il y des alternatives à l'utilisation de mysql_install_db tel qu'il est fourni dans la distribution MySQL : Pour plus d'informations sur ces alternatives, voyez section 4.3.4 Création des premiers droits MySQL.
  2. Démarrez le serveur MySQL comme ceci :
    shell> cd mysql_installation_directory
    shell> bin/safe_mysqld &
    
    Si vous avez des problèmes avec le démarrage du serveur, voyez section 2.4.2 Problèmes de démarrage du serveur MySQL.
  3. Utilisez mysqladmin pour vérifier que le serveur fonctionne. Les commandes suivantes fournissent un accès simple pour tester si le serveur fonctionne correctement :
    shell> BINDIR/mysqladmin version
    shell> BINDIR/mysqladmin variables
    
    Le résultat de mysqladmin version varie suivant votre plate-forme et votre version de MySQL, mais il doit être similaire à ceci :
    shell> BINDIR/mysqladmin version
    mysqladmin  Ver 8.14 Distrib 3.23.32, for linux on i586
    Copyright (C) 2000 MySQL AB & MySQL Finland AB & TCX DataKonsult AB
    This software comes with ABSOLUTELY NO WARRANTY. This is free software,
    and you are welcome to modify and redistribute it under the GPL license.
    
    Server version          3.23.32-debug
    Protocol version        10
    Connection              Localhost via Unix socket
    TCP port                3306
    UNIX socket             /tmp/mysql.sock
    Uptime:                 16 sec
    
    Threads: 1  Questions: 9  Slow queries: 0
    Opens: 7  Flush tables: 2  Open tables: 0
    Queries per second avg: 0.000
    Memory in use: 132K  Max memory used: 16773K
    
    Pour savoir ce que vous pouvez faire d'autre avec BINDIR/mysqladmin, appelez le avec l'option --help.
  4. Vérifiez que vous pouvez éteindre le serveur :
    shell> BINDIR/mysqladmin -u root shutdown
    
  5. Verifiez que vous pouvez redémarrer le serveur. Faites cela avec safe_mysqld ou directement avec mysqld. Par exemple :
    shell> BINDIR/safe_mysqld --log &
    
    Si safe_mysqld échoue, essayez d'exécuter MySQL depuis le dossier d'installation (si vous n'y êtes pas déjà). Si cela ne fonctionne pas, voyez section 2.4.2 Problèmes de démarrage du serveur MySQL.
  6. Exécutez un test simple pour vérifier que le serveur fonctionne. Le résultat devrait être similaire à ces lignes ci :
    shell> BINDIR/mysqlshow
    +-----------+
    | Databases |
    +-----------+
    | mysql     |
    +-----------+
    
    shell> BINDIR/mysqlshow mysql
    Database: mysql
    +--------------+
    |    Tables    |
    +--------------+
    | columns_priv |
    | db           |
    | func         |
    | host         |
    | tables_priv  |
    | user         |
    +--------------+
    
    shell> BINDIR/mysql -e "SELECT host,db,user FROM db" mysql
    +------+--------+------+
    | host | db     | user |
    +------+--------+------+
    | %    | test   |      |
    | %    | test_% |      |
    +------+--------+------+
    
    Il y a aussi la suite de performances dans le dossier `sql-bench' (dans le dossier d'installation MySQL) que vous pouvez utiliser pour comparer les performances de MySQL avec d'autres plate-formes. Le dossier `sql-bench/Results' contient le résultat de nombreux tests avec différentes bases et plate-forme. Pour exécuter tous les tests, exécutez cette commande :
    shell> cd sql-bench
    shell> run-all-tests
    
    Si vous n'avez pas de dossier `sql-bench', vous utilisez probablement une distribution binaire au format RPM. Les distribution source RPM incluent le dossier de tests. Dans ce cas, vous devez d'abord installer la suite de test avant de l'utiliser. Depuis MySQL Version 3.22, il y a des fichiers de tests RPM, appelé `mysql-bench-VERSION-i386.rpm' qui contient les données de tests et les données. Si vous avez une distribution source, vous pouvez aussi exécuter les tests dans le dossier `tests'. Par exemple, pour exécuter `auto_increment.tst', faites ceci :
    shell> BINDIR/mysql -vvf test < ./tests/auto_increment.tst
    
    Les résultats attendus sont présentés dans le fichier `./tests/auto_increment.res'.

2.4.1 Problèmes d'exécution de mysql_install_db

Le but du script mysql_install_db est de générer un nouveau système de droits pour MySQL. Il ne modifiera aucune autre donnée! Il ne fera rien du tout si vous avez des tables de droits installées.

Si vous voulez recréer vos tables de droits, vous devez éteindre le serveur mysqld, si il fonctionnait, et faire ceci :

mv mysql-data-directory/mysql mysql-data-directory/mysql-old
mysql_install_db

Cette section liste les problèmes que vous pourriez rencontrer lors de l'exécution du script mysql_install_db :

mysql_install_db n'installe pas les tables de droits
Vous réalisez que mysql_install_db n'arrive pas à installer les tables de droits, et se termine sur ce message :
starting mysqld daemon with databases from XXXXXX
mysql daemon ended
Dans ce cas, examinez le fichier de log très attentivement! Le fichier de log est situé dans le dossier `XXXXXX' indiqué dans le message d'erreur, et il indiquera pourquoi mysqld n'a pas démarré. SI vous ne comprenez pas ce qui est arrivé, incluez le log dans votre message, lors de l'envoi du rapport de bugs avec mysqlbug! See section 1.7.1.3 Comment rapporter un bogue ou un problème.
Un démon mysqld fonctionne déjà
Dans ce cas, vous n'avez probablement pas exécuté mysql_install_db du tout. Vous avez exécuté mysql_install_db une fois, lorsque vous avez installé MySQL pour la première fois.
Installer un second démon mysqld n'est pas possible lorsque le premier fonctionne.
Cela arrive lorsque vous avez une installation MySQL pré-existantes, mais que vous voulez installer une autre version ailleurs (par exemple, pour faire des tests ou simplement pour avoir deux installations). Généralement, le problème survient lorsque le second serveur est démarré, et qu'il essaie d'utiliser les mêmes ports et sockets que le premier. Dans ce cas, vous recevez des message d'erreur tels que : Can't start server: Bind on TCP/IP port: Address already in use ou Can't start server: Bind on unix socket.... See section 4.1.3 Installer plusieurs serveurs sur la même machine.
You don't have write access to `/tmp'
Si vous n'avez pas les droits d'accès suffisant pour créer un fichier de socket à l'endroit prévu (dans `/tmp') ou les permissions pour créer un fichier temporaire dans `/tmp,' vous allez avoir une erreur lors de l'utilisation de mysql_install_db ou avec mysqld. Vous pouvez spécifier une socket différente et un dossier temporaire différent avec les options suivantes :
shell> TMPDIR=/some_tmp_dir/
shell> MYSQL_UNIX_PORT=/some_tmp_dir/mysqld.sock
shell> export TMPDIR MYSQL_UNIX_PORT
Voir section A.4.5 Comment protéger ou changer le fichier socket `/tmp/mysql.sock'. `some_tmp_dir' doit être un chemin vers un dossier dans lequel vous avez les permissions d'écriture. See section E Variables d'environnement. Après cela, vous devriez être capable d'exécuter mysql_install_db et démarrer le serveur avec ces commandes :
shell> scripts/mysql_install_db
shell> BINDIR/safe_mysqld &
mysqld crashes immediately
Si vous utilisez RedHat version 5.0 avec une version de glibc plus ancienne que 2.0.7-5, assurez vous que vous avez installé les patchs glibc! Il y a beaucoup de littérature à ce propos dans les archives de listes de diffusion. Des liens vers les archives sont disponibles à http://lists.mysql.com/. Voir aussi section 2.6.1 Notes relatives à Linux (toutes versions). Vous pouvez aussi démarrer mysqld manuellement avec l'option --skip-grant-tables puis ajouter les tables de droits avec Smysql:
shell> BINDIR/safe_mysqld --skip-grant-tables &
shell> BINDIR/mysql -u root mysql
Dans la base mysql, exécutez manuellement les commandes SQL disponibles dans mysql_install_db. Assurez vous que vous n'oubliez pas la commande mysqladmin flush-privileges ou mysqladmin reload pour dire au serveur de prendre en compte les tables de droits.

2.4.2 Problèmes de démarrage du serveur MySQL

Si vous allez utiliser des tables qui supportent les transactions (InnoDB, BDB), vous devez commencer par créer un fichier `my.cnf' et y placer les options de démarrage de ces tables. See section 7 Types de tables MySQL.

Généralement, vous démarrez le serveur mysqld de l'une de ces façons :

Lorsque le démon mysqld démarre, il change le dossier de travail par le dossier de données. C'est là qu'il doit trouver les fichiers de log, et le fichier pid (ID de processus), ainsi que les dossiers de bases.

Le chemin du dossier de données est codé en dur lorsque la distribution est compilée. Cependant, si mysqld cherche le dossier de données ailleurs que là ou il est vraiment, il ne va pas fonctionner correctement. Si vous avez des problèmes avec les chemins, vous pouvez utiliser les options dont mysqld dispose pour vous permettre de modifier dynamiquement le chemin du dossier de données : il suffit d'appeler mysqld avec l'option --help. Vous pouvez remplacer les valeurs par défaut en spécifiant les chemins corrects en ligne de commande avec mysqld. Ces options fonctionneront aussi avec safe_mysqld.

Normalement, vous devez appeler mysqld uniquement depuis le dossier d'installation de MySQL. Vous pouvez faire cela avec l'option --basedir. Vous pouvez aussi consulter l'affichage de --help pour vérifier le changement des options de chemin (notez que --help doit être l'option finale d'une commande mysqld. Par exemple :

shell> EXECDIR/mysqld --basedir=/usr/local --help

Une fois que vous avez déterminé le chemin que vous souhaitez, vous pouvez démarrer le serveur sans l'option --help.

Quelque soit la méthode que vous utilisez pour démarrer le serveur, si elle échoue, vérifiez le fichier de log pour savoir pourquoi. Les fichiers de log sont situés dans le dossier de données (typiquement `/usr/local/mysql/data' pour une distribution binaire, `/usr/local/var' pour une distribution source, et `\mysql\data\mysql.err' sous Windows). Regardez dans le dossier de données et recherchez des fichiers de la forme `host_name.err' et `host_name.log' ou host_name est le nom de votre serveur. Vérifiez alors les dernières lignes de ce fichier :

shell> tail host_name.err
shell> tail host_name.log

Recherchez des lignes comme celles-ci :

000729 14:50:10  bdb:  Recovery function for LSN 1 27595 failed
000729 14:50:10  bdb:  warning: ./test/t1.db: No such file or directory
000729 14:50:10  Can't init databases

Cela signifie que vous n'avez pas démarré mysqld avec --bdb-no-recover et Berkeley DB a trouvé une erreur dans les fichiers de log lorsqu'il a essayé de restaurer votre base. Pour pouvoir continuer, vous devez déplacer le vieux fichier de log Berkeley DB vers un autre dossier, pour l'examiner plus tard. Les fichiers de logs sont nommés `log.0000000001', et ce nombre augmente au fil du temps.

Si vous exécutez mysqld avec les tables BDB et que mysqld fait des core dumps au démarrage, c'est peut être que vous avez des problèmes avec le fichier de restauration de BDB. Dans ce cas, essayez de démarrer mysqld avec --bdb-no-recover. Si cela aide, vous devriez alors retirer tous les fichiers de log `log.*' du dossier de données, et démarrer mysqld à nouveau.

Si vous obtenez l'erreur suivant, cela signifie que d'autres programmes (ou un autre serveur mysqld) fonctionne déjà avec le port TCP/IP ou la socket que mysqld essaie d'utiliser :

Can't start server: Bind on TCP/IP port: Address already in use
  ou
Can't start server : Bind on unix socket...

Utilisez ps pour vous assurer que vous n'avez pas d'autre serveur mysqld qui fonctionne. SI vous ne pouvez pas trouver d'autre serveur en fonctionnement, essayer d'exécuter la commande telnet votre-nom-d-hote numero-de-port-tcp puis pressez la touche 'Entrée' plusieurs fois. SI vous n'obtenez pas de message d'erreur comme telnet: Unable to connect to remote host: Connection refused, alors un autre processus utilise le port TCP/IP de mysqld. Voyez section 2.4.1 Problèmes d'exécution de mysql_install_db et section 4.1.4 Faire fonctionner plusieurs serveurs MySQL sur la même machine.

Si mysqld est en fonctionnement, vous pouvez connaître les chemins qu'il utilise avec la commande suivante :

shell> mysqladmin variables

ou

shell> mysqladmin -h 'your-host-name' variables

Si vous obtenez une erreur Errcode 13, qui indique Permission denied, lors du démarrage de mysqld, cela signifie que vous n'avez pas les droits de lecture ou d'écriture sur le dossier de données de MySQL, ou dans le dossier de logs. Dans ce cas, vous devriez démarrer mysqld en tant que root, ou changer les permissions des fichiers et dossiers utilisés.

Si safe_mysqld démarre le serveur, mais que vous n'arrivez pas à vous y connecter, vous devriez vous assurer que vous avez une entrée dans le fichier `/etc/hosts' qui ressemble à ceci :

127.0.0.1       localhost

Ce problème survient uniquement sur les systèmes qui n'ont pas une librairie de threads fonctionnels, ou pour lesquels MySQL a été configuré pour utiliser les MIT-pthreads.

SI vous ne pouvez pas faire démarrer mysqld, essayez de faire un fichier de trace pour identifier le problème. See section D.1.2 Créer un fichier de traçage.

Si vous utilisez les tables InnoDB, reportez vous aux options de configuration spécifiques à InnoDB. See section 7.5.2 Options de démarrage InnoDB.

Si vous utilisez les tables BDB (Berkeley DB), vous devriez vous familiariser avec les options de démarrage spécifiques à BDB. See section 7.6.3 Options de démarrage BDB.

2.4.3 Lancer et arrêter MySQL automatiquement.

Les scripts mysql.server et safe_mysqld peuvent être utilisés pour démarrer le serveur automatiquement au moment du démarrage du serveur. mysql.server peut aussi servir à arrêter le serveur.

Le script mysql.server peut servir à démarrer ou arrêter le serveur en l'appelant avec les arguments start ou stop :

shell> mysql.server start
shell> mysql.server stop

mysql.server est installé dans le dossier `share/mysql' du dossier d'installation de MySQL, ou dans le dossier `support-files' de la distribution source.

Avant que mysql.server ne démarre le serveur, il change de dossier pour aller dans le dossier d'installation et appelle safe_mysqld. Vous pourriez avoir à éditer mysql.server si vous avez une installation binaire dans une situation non standard. Modifiez la commande cd avec le dossier correct, avant qu'il n'exécute safe_mysqld. Si vous voulez que le serveur fonctionne avec un utilisateur spécifique, ajouter l'option user appropriée dans le fichier `/etc/my.cnf', tel que présenté ultérieurement dans cette section.

mysql.server stop arrête le serveur en lui envoyant un signal. Vous pouvez éteindre le serveur manuellement avec la commande mysqladmin shutdown.

Vous pouvez ajouter ces commandes de démarrage et d'arrêt aux endroits appropriés dans votre fichier `/etc/rc*' lorsque vous démarrez MySQL dans les applications de production. Notez que si vous modifiez mysql.server, et que vous passez à une nouvelle version de MySQL, votre vesrion modifiée sera écrasée, et vous devriez faire une copie de sauvegarde de votre script.

Si votre système utilise `/etc/rc.local' pour démarrer des scripts externes, vous devriez ajouter la ligne suivante :

/bin/sh -c 'cd /usr/local/mysql ; ./bin/safe_mysqld --user=mysql &'

Vous pouvez aussi ajouter des options à mysql.server via le fichier global `/etc/my.cnf' file. Un fichier `/etc/my.cnf' typique peut ressembler à ceci :

[mysqld]
datadir=/usr/local/mysql/var
socket=/var/tmp/mysql.sock
port=3306
user=mysql

[mysql.server]
basedir=/usr/local/mysql

Le script mysql.server comprend les options suivantes : datadir, basedir et pid-file.

La table suivante montre quels groupes d'options chaque scripts de démarrage utilise :

Script Groupe d'options
mysqld mysqld and server
mysql.server mysql.server, mysqld, and server
safe_mysqld mysql.server, mysqld, and server

See section 4.1.2 Fichier d'options `my.cnf'.

2.5 Changer de version de MySQL

Vous pouvez toujours les fichiers de structures et de données entre les différentes versions de MySQL. La version de base actuelle est la version 3. Si vous changez le jeu de caractères lors de l'utilisation de MySQL (ce qui va aussi affecter le tri), vous devez exécuter la commande myisamchk -r -q --set-character-set=charset sur toutes les tables. Sinon, vos index ne seront pas correctement triés.

Si vous avez peur des nouvelles versions, vous pouvez toujours renommer votre vieux mysqld avec un nom comme mysqld-ancienne_version. Si votre nouveau serveur mysqld se comportement bizarrement, vous pourrez toujours l'éteindre, et redémarrer avec votre vieux mysqld!

Lorsque vous faites une évolution de version, vous devriez toujorus faire une sauvegarde de vos anciennes données.

Si après un changement de version, vous rencontrez des problèmes avec les clients recompilés, comme Commands out of sync ou des core dumps inopinés, vous avez probablement utiliser un vieux fichier d'entête ou une vieille librairie lors de la compilation de vos programmes. Dans ce cas, vérifiez la date de votre fichier `mysql.h', et de votre librairie `libmysqlclient.a', pour vous assurer qu'ils proviennent bien de la nouvelle distribution MySQL. Si ce n'est pas le cas, recompilez vos programmes!

Si vous avez des problèmes comme si le nouveau serveur mysqld qui ne veut pas démarrer, ou que vous ne pouvez pas vous connecter sans un mot de passe, vérifiez que vous n'avez pas un vieux fichier `my.cnf' dans votre installation! Vous pouvez le vérifier comme ceci : program-name --print-defaults. Si cette commande affiche autre chose que le nom du programme, vous avez un fichier `my.cnf' actif, qui perturbe vos opérations.

C'est une bonne idée que de reconstruire et reinstaller le module Msql-Mysql à chaque fois que vous faites une nouvelle version de MySQL, en particulier si vous rencontrez des symptômes tels que les DBI qui font des core dump après votre mise à jour de MySQL.

2.5.1 Passer de la version 4.0 à la version 4.1

En général, voici ce que vous devez faire lorsque vous passez à la version 4.1, depuis une version plus ancienne :

Voici une liste plus complète, vous indiquant ce à quoi vous devez faire attention lors du changement de version :

Notez que le fichier de définition des tables (.frm) a été modifié légérement en 4.1. MySQL 4.0.11 peut désormais lire le nouveau format .frm mais les anciennes versions ne le peuvent pas. Si vous devez passer des tables en format 4.1 vers une version plus ancienne, vous devrez utiliser mysqldump. See section 4.8.5 mysqldump, exporter les structures de tables et les données.

2.5.2 Préparer le passage de version 4.0 en 4.1

2.5.3 Passer de la version 3.23 à la version 4.0

En général, ce que vous devez faire pour passer en version 4.0, à partir d'une version plus ancienne :

MySQL 4.0 va fonctionner même si vous ne suivez pas les instructions ci-dessus, mais il ne sera pas capable de profiter des nouveaux droits disponibles avec MySQL 4.0 et vous pourriez rencontrer des problèmes lors de l'évolution vers MySQL 4.1 ou plus récent. Les fichiers ISAM fonctionne toujours en MySQL 4.0 mais il est abandonné, et il sera désactivé en MySQL 5.0.

Les anciens clients doivent fonctionner avec le serveur version 4.0 sans aucun problème.

Même si vous suivez les instructions ci-dessus, vous pourrez retourner en version MySQL 3.23.52 ou plus récent, si vous rencontrez des difficultés avec MySQL 4.0. Dans ce cas, vous devez utiliser la commande mysqldump sur toutes les tables qui utilisent un index en texte plein, et restaurer ces tables en 3.23 (car la version 4.0 utilise un nouveau format pour les index en texte plein).

Voici une liste plus complète de points à contrôler lorsque vous passez à la version 4.0 :

2.5.4 Passer de la version 3.22 à la version 3.23

MySQL version 3.23 supporte les nouvelles tables MyISAM et les anciennes tables ISAM. Vous n'avez pas à convertir vos anciennes tables pour utiliser la nouvelle version 3.23. Par défaut, toutes les nouvelles tables seront créées avec le type MyISAM (à moins que vous ne lanciez mysqld avec l'option --default-table-type=isam). Vous pouvez changer la table ISAM en table MyISAM avec la commande ALTER TABLE table_name TYPE=MyISAM ou le script Perl mysql_convert_table_format.

Les clients des versions 3.22 et 3.21 vont fonctionner sans problèmes avec la verison 3.23 du serveur.

La liste suivante indique les points à vérifier lors de la migration :

2.5.5 Passer de la version 3.21 à la version 3.22

Rien qui n'affecte la compatibilité n'a changé entre les versions 3.21 et 3.22. Le seul problème courant est que les nouvelles tables qui sont créées avec le type DATE vont désormais utiliser le nouveau format de stockage. Vous ne pourrez pas accéder à ces nouveaux formats depuis les vieilles versions de mysqld.

Après avoir installé MySQL version 3.22, vous devriez démarrer le nouveau serveur, et exécuter le script mysql_fix_privilege_tables. Il va ajouter les nouveaux droits à la commande GRANT. SI vous oubliez cela, vous obtiendrez des erreurs Access denied lorsque vous essayez d'utiliser les commandes ALTER TABLE, CREATE INDEX ou DROP INDEX. Si votre compte root MySQL utilise un mot de passe, vous devriez l'indiquer au script mysql_fix_privilege_tables.

L'interface C de mysql_real_connect() a changé. Si vous avez un vieux client qui appelle cette fonction, vous devez placer un 0 pour le nouvel argument db (ou réécrire le client pour qu'il envoie l'élément db, et accélère les connexions). Vous devez aussi appeler mysql_init() avant d'appeler mysql_real_connect()! Ce changement a été fait pour permettre l'appel de la fonction mysql_options(), qui sauve les options dans la structure MYSQL.

La variable key_buffer de mysqld a changé de nom, et est devenue key_buffer_size, mais vous pouvez toujours utiliser l'ancien nom dans vos fichiers de démarrage.

2.5.6 Passer de la version 3.20 à la version 3.21

Si vous avez une version de MySQL plus ancienne que la version 3.20.28 et que vous voulez passer à la version 3.21, vous devez suivre ces étapes :

Vous pouvez démarrer le serveur mysqld version 3.21 avec le script safe_mysqld --old-protocol pour l'utiliser avec les clients de la version 3.20. Dans ce cas, la fonction mysql_errno() des nouveaux clients ne sera pas fonctionnelle, et seul CR_UNKNOWN_ERROR (mais il fonctionne pour les erreurs client), et le serveur utilisera l'ancienne fonction password() plutôt que la nouvelle.

Si vous n'utilisez pas l'option --old-protocol avec mysqld, vous devez suivre ces instructions :

MySQL version 3.20.28 et plus récent peut gérer les nouvelles tables user sans affecter les clients. Si vous avez une version plus ancienne que la 3.20.28, les mots de passe ne seront plus valide, si vous convertissez la table user. Pour être tranquille, commencez par faire passer votre version à la 3.20.28 puis passez en version 3.21.

Le nouveau client fonctionne avec le serveur 3.20.x mysqld, alors si vous rencontrez des problèmes avec la version 3.21.x, vous pouvez toujours vous rabattre sur les vieux serveurs 3.20.x sans recompiler les clients.

Si vous n'utilisez pas l'option --old-protocol de mysqld, les vieux clients vont émettre une erreur :

ERROR: Protocol mismatch. Server Version = 10 Client Version = 9

La nouvelle interface Perl DBI/DBD supporte aussi l'ancienne interface mysqlperl. Le seul changement que vous devez faire si vous utilisez mysqlperl est de changer les arguments de la fonction connect(). Les nouveaux arguments sont : host, database, user, et password (les arguments user et password ont été échangés). See section 8.2.2 L'interface DBI.

Les modifications actuelles affectent les requêtes des anciennes applications :

2.5.7 Migrer depuis une autre architecture

Si vous utilisez MySQL version 3.23, vous pouvez copier les fichiers `.frm', `.MYI' et `.MYD' entre les différentes architectures qui supportent le même format de nombre à virgule flottante (MySQL prend en charge les échanges d'octets).

Les données MySQL des tables ISAM et les fichiers d'index (`.ISD' et `*.ISM', respectivement) sont dépendantes de l'architecture, et dans certains cas, dépendantes du système d'exploitation. Si vous voulez déplacer des applications vers une autre machine qui a une autre architecture, ou un autre système d'exploitation que votre machine courante, il est recommandé de ne pas faire une simple copie de base en copiant les fichiers vers leur nouvelle destination. Utilisez plutôt mysqldump.

Par défaut, mysqldump va créer un fichier de requêtes SQL. Vous pouvez alors transférer le fichier sur une autre machine, et le fournir comme script à un client mysql.

Essayez la commande mysqldump --help pour voir quelles options sont disponibles. Si vous envoyez les données vers une nouvelle version de MySQL, il recommandé d'utiliser l'option mysqldump --opt pour obtenir un export compact et plus rapide.

Le plus facile (mais pas le plus rapide) pour déplacer une base de données entre deux machines et d'exécuter les commandes suivantes sur la machine qui héberge la base :

shell> mysqladmin -h 'other hostname' create db_name
shell> mysqldump --opt db_name \
        | mysql -h 'other hostname' db_name

Si vous voulez copier la base depuis une machine distante sur un réseau lent, vous pouvez utiliser :

shell> mysqladmin create db_name
shell> mysqldump -h 'other hostname' --opt --compress db_name \
        | mysql db_name

Vous pouvez aussi stocker le résultat dans un fichier, et transférer le fichier sur la machine de destination, puis charger ce fichier dans le serveur. Par exemple, vous pouvez exporter la base vers un fichier source comme ceci :

shell> mysqldump --quick db_name | gzip > db_name.contents.gz

Le fichier créé est compressé. Transférez le fichier contenant le contenu de votre base sur la machine de destination, puis utilisez ces commandes :

shell> mysqladmin create db_name
shell> gunzip < db_name.contents.gz | mysql db_name

Vous pouvez aussi utiliser mysqldump et mysqlimport pour accomplir cette opération. Pour les grandes tables, c'est bien plus rapide que d'utiliser simplement mysqldump. Dans les commandes suivantes, DUMPDIR représente le chemin complet du dossier que vous utilisez pour stocker le résultat de mysqldump.

Premièrement, créez un dossier pour les fichiers d'exportation, puis faites l'export :

shell> mkdir DUMPDIR
shell> mysqldump --tab=DUMPDIR db_name

Puis transférez les fichiers du dossier DUMPDIR dans un dossier correspondant, dans la machine de destination, puis chargez ces fichiers dans MySQL comme ceci :

shell> mysqladmin create db_name           # Création de la base
shell> cat DUMPDIR/*.sql | mysql db_name   # Création des tables dans la base
shell> mysqlimport db_name DUMPDIR/*.txt   # Chargement des données dans les tables

N'oubliez pas non plus de copier le contenu de votre base mysql car c'est là que résident les droits (user, db, host). Vous devrez alors exécuter les commandes en tant que root MySQL sur la nouvelle machine, jusqu'à ce que vous ayez réinstallé mysql.

Après l'importation de la base mysql sur la nouvelle machine, exécutez la commande mysqladmin flush-privileges pour que le serveur relise les droits.

2.6 Notes spécifiques aux systèmes d'exploitation

2.6.1 Notes relatives à Linux (toutes versions)

Les notes suivantes relatives à glibc ne s'appliquent que dans la situation où vous construisez MySQL vous-même. Si vous n'utilisez pas Linux sur une machine x86 machine, dans la plupart des cas, il sera mieux pour vous d'utiliser nos binaires. Nous lions nos binaires avec la meilleur version patchée de glibc que nous pouvons fournir et avec les meilleurs options du compilateur, en essayant de les rendre bons pour un serveur qui connait de fortes charges. Et donc, si vous lisez le texte suivant et que vous avez un doute sur ce que vous devez faire, essayez d'abord notre binaire pour voir s'il vous convient, et ne vous souciez de vosz propres constructions qu'après vous être assurés que notre binaire ne répond pas à vos attentes. Dans ce cas, nous apprécierons une note à propos de cela, pour que nous puissions faire mieux la prochaine fois. Pour les besoins d'un utilisateur de base, pour des configurations avec beaucoup de connexions et/ou des tables dépassant la limite des 2G, notre binaire est dans la plupart des cas le meilleur choix.

MySQL utilise LinuxThreads sur Linux. Si vous utilisez une vielle version de Linux qui ne possède pas glibc2, vous devz installer LinuxThreads avant d'essayer de compiler MySQL. Vous pouvez obtenir LinuxThreads à l'adresse suivante : http://www.mysql.com/downloads/os-linux.html.

Note : Nous avons rencontré quelques problèmes étranges avec Linux 2.2.14 et MySQL sur les systèmes SMP. Si vous avez un système SMP, nous vous recommandons de mettre à jour à Linux 2.4 dès que possible ! Votre système n'en sera que plus rapide et plus stable !

Notez que les versions de glibc inférieure ou égale à la 2.1.1 ont un bogue fatal dans la gestion de pthread_mutex_timedwait, qui est utilisé lors que vous exécutez INSERT DELAYED. Nous vous recommandons de ne pas utiliser INSERT DELAYED avant de mettre à jour glibc.

Si vous planifiez d'avoir plus de 1000 connexions simultanées, vous aurez besoin d'apporter quelques modifications à LinuxThreads, le recompiler, et relier MySQL avec le nouveau `libpthread.a'. Augmentez PTHREAD_THREADS_MAX dans `sysdeps/unix/sysv/linux/bits/local_lim.h' à 4096 et diminuez STACK_SIZE dans `linuxthreads/internals.h' à 256 KB. Les chemins sont relatifs à la racine de glibc. Notez que MySQL ne sera pas stable autour de 600-1000 connexions si STACK_SIZE est à 2 MB (par défaut).

Si MySQL n'arrive pas à ouvrir assez de fichiers, ou à créer assez de connexions, il se peut que vous n'ayez pas configuré Linux pour qu'il gère assez de fichiers.

Dans Linux 2.2 ou plus, vous pouvez connaitre le nombre de gestionnaires de fichiers alloués en faisant :

cat /proc/sys/fs/file-max
cat /proc/sys/fs/dquot-max
cat /proc/sys/fs/super-max

Si vous avez plus de 16 MB de mémoire, vous devez ajouter qauelque chose comme ce qui suit dans vos scripts d'initialisation (`/etc/init.d/boot.local' sur SuSE Linux) :

echo 65536 > /proc/sys/fs/file-max
echo 8192 > /proc/sys/fs/dquot-max
echo 1024 > /proc/sys/fs/super-max

Vous pouvez aussi exécuter les commandes précédentes à partir de la ligne de commande en tant que root, mais les changements seront perdus au prochain redémarrage de l'ordinateur.

Vous pouvez sinon définir ces paramètres lors du démarrage de la machine en utilisant l'outil sysctl, qui est utilisé par plusieurs distributions Linux (SuSE l'a aussi ajouté, à partir de SuSE Linux 8.0). Ajoutez simplement les valeurs suivantes dans un fichier nommé `/etc/sysctl.conf' :

# Increase some values for MySQL
fs.file-max = 65536
fs.dquot-max = 8192
fs.super-max = 1024

Vous devez aussi ajouter ce qui suit à `/etc/my.cnf' :

[safe_mysqld]
open-files-limit=8192

Cela devrait permettre à MySQL de créer jusqu'à 8192 fichiers de conexion.

La constante STACK_SIZE des LinuxThreads contrôle l'espacement des piles de threads dans l'espace d'adressage. Elle doit être assez grande pour qu'il y ait plusieurs chambres pour la pile de chaque thread individuel, mais assez petite pour empêcher les piles de certains threads d'agir sur les données globales de mysqld. Malheureusement, l'implémentation Linux de mmap(), comme nous l'avons découvert, will successfully unmap an already mapped region if you ask it to map out an address already in use, zeroing out the data on the entire page, instead of returning an error. So, the safety of mysqld or any other threaded application depends on the "gentleman" behaviour of the code that creates threads. The user must take measures to make sure the number of running threads at any time is sufficiently low for thread stacks to stay away from the global heap. With mysqld, you should enforce this "gentleman" behaviour by setting a reasonable value for the max_connections variable.

Si vous construisez MySQL vous-mêmes et ne voulez pas vous amuser à patcher LinuxThreads, vous ne devez pas dépasser 500 pour la valeur de max_connections. Cela devrait même être moins si vous avez un tampon de clefs assez large, de grosses tables heap, ou d'autres choses qui peuvent faire allouer beaucoup de mémoire à mysqld, ou si vous utilisez un noyau 2.2 avec un patch 2G. Si vous utilisez notre binaire ou RPM 3.23.25 ou plus, vous pouvez mettre max_connections à 1500 sans problèmes, en supposant que vous n'avez ni de grosses tables heap ni grands tampons de clefs. Plus vous réduirez STACK_SIZE dans LinuxThreads plus les threads créés seront sûrs. Nous recommandons une valeur entre 128K et 256K.

Si vous utilisez beaucoup de connexions simultanées vous souffrirez peut-être d'une "fonctionnalité" du noyau 2.2 qui pénalise un processus lors du fork ou du clonage d'un enfant en essayant de prévenir un attaque du type fork bomb. This will cause MySQL not to scale well as you increase the number of concurrent clients. On single-CPU systems, we have seen this manifested in a very slow thread creation, which means it may take a long time to connect to MySQL (as long as 1 minute), and it may take just as long to shut it down. On multiple-CPU systems, we have observed a gradual drop in query speed as the number of clients increases. In the process of trying to find a solution, we have received a kernel patch from one of our users, who claimed it made a lot of difference for his site. The patch is available at http://www.mysql.com/Downloads/Patches/linux-fork.patch. We have now done rather extensive testing of this patch on both development and production systems. It has significantly improved MySQL performance without causing any problems and we now recommend it to our users who are still running high-load servers on 2.2 kernels. This issue has been fixed in the 2.4 kernel, so if you are not satisfied with the current performance of your system, rather than patching your 2.2 kernel, it might be easier to just upgrade to 2.4, which will also give you a nice SMP boost in addition to fixing this fairness bug.

We have tested MySQL on the 2.4 kernel on a 2-CPU machine and found MySQL scales much betterthere was virtually no slowdown on queries throughput all the way up to 1000 clients, and the MySQL scaling factor (computed as the ratio of maximum throughput to the throughput with one client) was 180%. We have observed similar results on a 4-CPU systemvirtually no slowdown as the number of clients was increased up to 1000, and 300% scaling factor. So for a high-load SMP server we would definitely recommend the 2.4 kernel at this point. We have discovered that it is essential to run mysqld process with the highest possible priority on the 2.4 kernel to achieve maximum performance. This can be done by adding renice -20 $$ command to safe_mysqld. In our testing on a 4-CPU machine, increasing the priority gave 60% increase in throughput with 400 clients.

Nous essayons aussi actuellement d'obtenir des informations sur le bon fonctionnement de MySQL sur le noyaux 2.4 sur les systèmes 4-voies and 8-voies. Si vous avez accès à un tel système et que vous avez effectués quelques tests de performances, envoyez-nous un mail à docs@mysql.com avec les résultats, nous les inclurons dans le manuel.

There is another issue that greatly hurts MySQL performance, especially on SMP systems. The implementation of mutex in LinuxThreads in glibc-2.1 is very bad for programs with many threads that only hold the mutex for a short time. On an SMP system, ironic as it is, if you link MySQL against unmodified LinuxThreads, removing processors from the machine improves MySQL performance in many cases. We have made a patch available for glibc 2.1.3 to correct this behaviour (http://www.mysql.com/Downloads/Linux/linuxthreads-2.1-patch).

With glibc-2.2.2 MySQL version 3.23.36 will use the adaptive mutex, which is much better than even the patched one in glibc-2.1.3. Be warned, however, that under some conditions, the current mutex code in glibc-2.2.2 overspins, which hurts MySQL performance. The chance of this condition can be reduced by renicing mysqld process to the highest priority. We have also been able to correct the overspin behaviour with a patch, available at http://www.mysql.com/Downloads/Linux/linuxthreads-2.2.2.patch. It combines the correction of overspin, maximum number of threads, and stack spacing all in one. You will need to apply it in the linuxthreads directory with patch -p0 </tmp/linuxthreads-2.2.2.patch. We hope it will be included in some form in to the future releases of glibc-2.2. In any case, if you link against glibc-2.2.2 you still need to correct STACK_SIZE and PTHREAD_THREADS_MAX. We hope that the defaults will be corrected to some more acceptable values for high-load MySQL setup in the future, so that your own build can be reduced to ./configure; make; make install.

We recommend that you use the above patches to build a special static version of libpthread.a and use it only for statically linking against MySQL. We know that the patches are safe for MySQL and significantly improve its performance, but we cannot say anything about other applications. If you link other applications against the patched version of the library, or build a patched shared version and install it on your system, you are doing it at your own risk with regard to other applications that depend on LinuxThreads.

Si vous rencontrez des problèmes étranges lors de l'installation de MySQL, ou quoi que ce soit qui s'en rapproche, il est fort possible que cela soit un problème de librairie ou de compilateur. Si c'est le cas, l'utilisation de notre binaire les résoudra.

Un problème connu avec la distribution binaire est que avec les anciens systèmes Linux qui utilisent libc (comme RedHat 4.x ou Slackware), vous obtiendrez quelques erreurs non-fatales de résolutions de noms d'hôtes. See section 2.6.1.1 Notes relatives à Linux pour les distributions binaires.

Lors de l'utilisation des LinuxThreads vous verrez un minimum de trois processus en cours. Il s'agit en fait de threads, il y a a un pour le gestionnaire des LinuxThreads, un pour gérer les connexions, et un autre pour gérer les alarmes et les signaux.

Notez que le noyau Linux et la librairie LinuxThread ne peuvent avoir par défaut que 1024 threads. Cela signifie que vous ne pouvez avoir que 1021 connexions à MySQL sur un système non-patché. La page http://www.volano.com/linuxnotes.html contient des informations pour contourner cette limite.

Si vous voyez un processus de démon mysqld mort avec ps, cela signifie le plus souvent que vous avez trouvé un bogue dans MySQL ou que vous avez une table corrompue. See section A.4.1 Que faire si MySQL crashe constamment ?.

To get a core dump on Linux if mysqld dies with a SIGSEGV signal, you can start mysqld with the --core-file option. Note that you also probably need to raise the core file size by adding ulimit -c 1000000 to safe_mysqld or starting safe_mysqld with --core-file-size=1000000. See section 4.7.2 safe_mysqld, le script père de mysqld.

Si vous liez votre propre client MySQL et que vousobtenez l'erreur suivante :

ld.so.1: ./my: fatal: libmysqlclient.so.4:
open failed: No such file or directory

lors de son exécution, le problème peut être contourné des façons suivantes :

Si vous utilisez le compilateur Fujitsu (fcc / FCC) vous aurez quelques problèmes en compilant MySQL car les fichiers d'entêtes Linux sont très orientés gcc.

La ligne suivante de configure devrait fonctionner avec fcc/FCC :

CC=fcc CFLAGS="-O -K fast -K lib -K omitfp -Kpreex -D_GNU_SOURCE \
-DCONST=const -DNO_STRTOLL_PROTO" CXX=FCC CXXFLAGS="-O -K fast -K lib \
-K omitfp -K preex --no_exceptions --no_rtti -D_GNU_SOURCE -DCONST=const \
-Dalloca=__builtin_alloca -DNO_STRTOLL_PROTO \
'-D_EXTERN_INLINE=static __inline'" ./configure --prefix=/usr/local/mysql \
--enable-assembler --with-mysqld-ldflags=-all-static --disable-shared \
--with-low-memory

2.6.1.1 Notes relatives à Linux pour les distributions binaires

MySQL requière au moins la version 2.0 de Linux.

Attention : Certains utilisateurs de MySQL nous ont avertis qu'ils ont rencontré de graves problèmes de stabilité avec MySQL et le noyau 2.2.14 de Linux. Si vous utilisez ce noyau, vous devez mettre à jour à la 2.2.19 (ou plus récent) ou a un noyau 2.4. Si vous utilisez un ordinateur multi-processeurs, vous devriez sérieusement songer à passer au noyau 2.4 qui vous aportera de grandes performances niveau vitesse.

La version binaire est liée avec -static, ce qui signifie que normalement vous n'avez pas besoin de vous soucier des versions des librairies système que vous avez. Vous n'avez pas besoin d'installer LinuxThreads non plus. Un programme lié avec -static est légèrement plus grand qu'un programme liée dynamiquement mais aussi un peu plus rapide (3-5%). Un problème, toutefois, est que vous ne pouvez utiliser de fonctions définies par l'utilisateur avec un programme lié statiquement. Si vous allez écrire ou utiliser des fonctions UDF (c'est réservé aux développeurs C ou C++), vous devez compiler MySQL vous-mêmes, en utilisant les liaisons dynamiques.

Si vous utilisez un système basé sur libc (au lieu de glibc2), vous aurez probablement quelques problèmes de résolution des noms d'hôtes et des problèmes avec getpwnam() avec les versions binaires. (Cela vient du fait que glibc dépend malheureusement de quelques librairies externes pour résoudre les noms d'hôtes et getpwent(), même quand elle est compilée avec -static). Dans ce cas, vous obtiendrez probablement l'erreur suivante quand vous exécuterez mysql_install_db :

Sorry, the host 'xxxx' could not be looked up

ou l'erreur suivante quand vous essayez de démarrer mysqld avec l'option --user :

getpwnam: No such file or directory

Vous pouvez résoudre ce problème de la façon suivante :

Le binaire Linux-Intel et les RPM de MySQL sont configurés pour la vitesse la plus grande possible. Nous essayons toujours d'utiliser le compilateur le plus rapide disponible.

Le support Perl de MySQL requière la version 5.004_03 de Perl ou plus récent.

Sur quelques version de Linux 2.2, vous pouvez obtenir l'erreur Resource temporarily unavailable quand vous faites beaucoup de nouvelles connexions à un serveur mysqld en utilisant TCP/IP.

Le problème est que Linux possède un délai entre votre fermeture de la socket TCP/IP et sa libération par le système. Vu qu'il y a un nombre fini de places pour les branchements TCP/IP, vous obtiendrez l'erreur précédente si vous essayez de faire beaucoup de connexions TCP/IP en peu de temps, comme quand vous exécutez le benchmark MySQL `test-connect' via TCP/IP.

Nous avons envoyé des questions plusieurs fois à propos de ce problème à différentes listes de diffusions Linux mais n'avons jamais réussi à résoudre ce problème proprement.

Le seul 'correctif' connu pour ce problème est d'utiliser des connexions persistantes dans vos clients ou d'utiliser les sockets, si vous utilisez le serveur de bases de données et le client sur la même machine. Nous espérons que le noyau de Linux 2.4 corrigera ce problème bientôt.

2.6.1.2 Notes relatives à Linux x86

MySQL requière la version 5.4.12 de libc ou plus récent. Il est connu pour fonctionner avec libc 5.4.46. La version 2.0.6 de glibc ou plus récente devrait aussi fonctionner. Il y a eu quelques problèmes avec les RPM de glibc de RedHat, et donc, si vous avez des problèmes, vérifiez s'il existe des mises à jour ! Les RPM de glibc 2.0.7-19 et 2.0.7-29 snot connus pour fonctionner.

Si vous utilisez gcc 3.0 ou plus récent pour compiler MySQL, vous devez installer la librairie libstdc++v3 avant de compiler MySQL; si vous ne le faites pas vous obtiendrez une erreur à propos d'un symbole __cxa_pure_virtual manquant durant la liaison !

Sur quelques vieilles distributions de Linux, configure peut produire une erreur comme celle qui suit :

Syntax error in sched.h. Change _P to __P in the /usr/include/sched.h file.
See the Installation chapter in the Reference Manual.

Faites ce que le message d'erreur dit et ajoutez un _ à la macro _P qui n'en a qu'un, puis essayez à nouveau.

Vous pouvez obtenir quelques avertissements en compilant; celles qui suivent peuvent être ignorées :

mysqld.cc -o objs-thread/mysqld.o
mysqld.cc: In function `void init_signals()':
mysqld.cc:315: warning: assignment of negative value `-1' to
`long unsigned int'
mysqld.cc: In function `void * signal_hand(void *)':
mysqld.cc:346: warning: assignment of negative value `-1' to
`long unsigned int'

Sur Debian GNU/Linux, si vous voulez que MySQL démarre automatiquement lors du démarrage de votre système, faites ce qui suit :

shell> cp support-files/mysql.server /etc/init.d/mysql.server
shell> /usr/sbin/update-rc.d mysql.server defaults 99

mysql.server peut être trouvé dans le dossier `share/mysql' dans le dossier d'installation de MySQL ou dans le dossier `support-files' de l'arborescence des sources de MySQL.

Si mysqld provoque toujours un core dump au démarrage, le problème peut être que vous avez un vieux `/lib/libc.a'. Renommez le, puis supprimez `sql/mysqld' et faites à nouveau un make install puis réassayez. Ce problème a été reporté sur quelques installations de Slackware.

Si vous obtenez l'erreur suivante en liant mysqld, cela signifie que votre `libg++.a' n'est pas installé correctement :

/usr/lib/libc.a(putc.o): In function `_IO_putc':
putc.o(.text+0x0): multiple definition of `_IO_putc'

Vous pouvez éviter d'utiliser `libg++.a' en exécutant configure comme suit :

shell> CXX=gcc ./configure

2.6.1.3 Notes relatives à Linux SPARC

Sur quelques implémentations, readdir_r() est cassé. Le symptome est que SHOW DATABASES retourne toujours un résultat vide. Cela peut être corrigé en supprimant HAVE_READDIR_R de `config.h' après avoir configuré et avant de commencer à compiler.

2.6.1.4 Notes relatives à Linux Alpha

La version 3.23.12 de MySQL est la première version de MySQL à être testée sur Linux-Alpha. Si vous voulez utiliser MySQL sur Linux-Alpha, vous devez vous assurer d'avoir cette version ou une version plus récente.

Nous avons testé MySQL sur Alpha avec nos tests de performance et notre suite de tests : tout semble fonctionner correctement.

Nous construisons actuellement les paquets binaires de MySQL sur SuSE Linux 7.0 pour AXP, kernel 2.4.4-SMP, Compaq C compiler (V6.2-505) et Compaq C++ compiler (V6.3-006) sur une machine Compaq DS20 avec un processeur Alpha EV6.

Vous pouvez trouver les précédents compilateurs sur http://www.support.compaq.com/alpha-tools/). En utilisant ces compilateurs, au lieu de gcc, nous obtenons environs 9 à 14% d'améliorations des performances avec MySQL.

Notez que jusqu'aux versions 3.23.52 et 4.0.2 de MySQL nous avons optimisé l'application pour le processeur courant seulement (en utilisant l'option de compilation -fast); cela signifiait que vous ne pouviez utiliser nos binaires si vous n'aviez pas un processeur Alpha EV6.

Avec les versions suivantes nous avons ajouté l'option -arch generic à nos options de compilation, ce qui assure que le binaire fonctionne sur tout les processeurs Alpha. Nous compilons aussi statiquement pour éviter les problèmes de librairies.

CC=ccc CFLAGS="-fast -arch generic" CXX=cxx \
CXXFLAGS="-fast -arch generic -noexceptions -nortti" \
./configure --prefix=/usr/local/mysql --disable-shared \
--with-extra-charsets=complex --enable-thread-safe-client \
--with-mysqld-ldflags=-non_shared --with-client-ldflags=-non_shared

Si vous voulez utiliser egcs la ligne de configuration suivante a fonctionné pour nous :

CFLAGS="-O3 -fomit-frame-pointer" CXX=gcc \
CXXFLAGS="-O3 -fomit-frame-pointer -felide-constructors \
-fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql \
--disable-shared

Quelques problèmes connus lors de l'utilisation de MySQL sur Linux-Alpha:

2.6.1.5 Note relative à Linux PowerPC

MySQL devrait fonctionner sur MkLinux avec le dernier package glibc (testé avec glibc 2.0.7).

2.6.1.6 Notes relatives à Linux MIPS

Pour faire fonctionner MySQL sur Qube2, (Linux Mips), vous aurez besoin de la librairie glibc la plus récente (glibc-2.0.7-29C2 est connue pour marcher). Vous devez aussi utiliser le compilateur egcs C++ (egcs-1.0.2-9, gcc 2.95.2 ou plus récent).

2.6.1.7 Notes relatives à Linux IA64

Pour pouvoir compiler MySQL sous Linux IA64, nous utilisons les lignes de compilation suivante : En utilisant gcc-2.96 :

CC=gcc CFLAGS="-O3 -fno-omit-frame-pointer" CXX=gcc \
CXXFLAGS="-O3 -fno-omit-frame-pointer -felide-constructors \
-fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql \
"--with-comment=Official MySQL binary" --with-extra-charsets=complex

Sur IA64 les binaires des clients MySQL utilisent des librairies partagées. Cela signifie que si vous installez notre distribution binaire à un autre endroit que `/usr/local/mysql' vous devez modifier le fichier `/etc/ld.so.conf' ou ajouter le chemin vers le répertoire où vous avez `libmysqlclient.so' à la variable d'environnement LD_LIBRARY_PATH.

See section A.3.1 Problèmes lors de la liaison avec la librairie du client MySQL.

2.6.2 Notes relatives à Windows

Cette section décrit l'utilisation de MySQL sur Windows. Ces informations sont aussi fournies dans le fichier `README' disponible avec la distribution Windows de MySQL. See section 2.1.2 Installer MySQL sous Windows.

2.6.2.1 Démarrer MySQL sous Windows 95, 98 ou Me

MySQL utilise TCP/IP pour connecter le client au serveur (cela permet à une machine distante de se connecter à votre serveur MySQL). A cause de cela, vous devez installer TCP/IP sur votre machine avant de démarrer MySQL. Vous pouvez trouver TCP/IP sur votre CDRom Windows.

Notez que si vous utilisez une vieille version de Windows 95 (par exemple, OSR2), il est probable que vous ayez une vieille version du Winsock; MySQL requiert Winsock 2! Vous pouvez télécharger le dernier Winsock sur http://www.microsoft.com/. Windows 98 dispose de la nouvelle librairie Winsock 2, et ce paragraphe ne s'applique pas.

Pour démarrer le serveur mysqld, vous devez utiliser une fenêtre MS-DOS et y taper :

C:\> C:\mysql\bin\mysqld

Cela va démarrer mysqld en tâche de fond, sans fenêtre.

Vous pouvez arrêter MySQL avec la commande :

C:\> C:\mysql\bin\mysqladmin -u root shutdown

Ce script appelle l'utilitaire d'administration MySQL sous le nom de `root', qui est l'administrateur par défaut. Notez bien que les noms d'utilisateurs de MySQL sont totalement indépendants des utilisateurs Windows.

Notez que Windows 95/98/Me ne supporte pas la création des pipes nommés. Sur ces plate-formes, vous ne pouvez utiliser que des pipes pour vous connecter à un serveur MySQL distant, qui tournerait sur un hôte Windows NT/2000/XP (le serveur MySQL soit aussi supporter les pipes nommés, bien sur. Par exemple, utiliser mysqld-opt sous NT/2000/XP ne permettra pas d'utiliser les pipes nommés. Vous devez utiliser soit mysqld-nt, soit mysqld-max-nt).

Si mysqld ne démarre pas, vérifiez le fichier `\mysql\data\mysql.err' pour voir si le serveur n'a pas placé un message d'erreur indiquant la cause du problème. Vous pouvez aussi essayer de démarrer le serveur avec la commande mysqld --standalone; dans ce cas, vous pourriez voir apparaître des informations sur l'écran qui vous aideront à résoudre le problème.

La dernière option est de démarrer mysqld avec l'option --standalone --debug. Dans ce cas, mysqld va écrire le fichier de log `C:\mysqld.trace' qui devrait contenir l'explication du problème. See section D.1.2 Créer un fichier de traçage.

Utilisez mysqld --help pour afficher toutes les options que mysqld comprend!

2.6.2.2 Démarrer MySQL sur Windows NT, 2000 ou XP

Pour faire fonctionner MySQL avec TCP/IP sous Windows NT 4, vous devez installer le service pack 3 (ou plus récent)!

Normalement, vous devez installer MySQL comme un service Windows NT/2000/XP. Dans le cas où le serveur fonctionnerait déjà, commencez par le stopper, en utilisant cette commande :

C:\mysql\bin> mysqladmin -u root shutdown

Cela appelle l'utilitaire d'administation MySQL, avec l'utilisateur `root', qui est par défaut un Administrateur de MySQL. Notez bien que le système de droits de MySQL est totalement indépendant du système d'utilisateur de Windows.

Maintenant, l'installation du serveur en tant que service :

C:\mysql\bin> mysqld-max-nt --install

Si des options sont nécessaires, vous devez les spécifier comme ``Start parameters'' dans l'utilitaire Windows Services avant de démarrer le service MySQL.

L'utilitaire Services (Windows Service Control Manager) est disponible dans le Windows Control Panel (sous les Outils d'administration de Windows 2000). Il est recommandé de fermer les utilitaires de services durant l'installation --install ou la suppression --remove, pour éviter des erreurs étranges.

Pour des informations sur quel exécutable serveur utiliser, voyez section 2.1.2.2 Préparation de l'environnement MySQL de Windows.

Notez bien que depuis MySQL version 3.23.44, vous avez le choix de configurer le serveur en Manual au lieu d'automatique (si vous ne voulez pas que le service démarre en même temps que le serveur) :

C:\mysql\bin> mysqld-max-nt --install-manual

Le service est installé avec le nom MySQL. Une fois installé, il peut être immédiatement démarré depuis l'utilitaire Services, ou avec la commande en ligne NET START MySQL.

Une fois qu'il fonctionne, mysqld-max-nt peut être arrété avec mysqladmin, depuis l'utilitaire de services, ou en utilisant la commande en ligne NET STOP MySQL.

Lorsqu'il fonctionne comme service, le système d'exploitation va automatiquement arréter MySQL au moment de l'exticntion. Avec MySQL versions inférieures à 3.23.47, Windows attendait simplement quelques secondes l'extinction, puis si cela durait trop, il tuait le processus, ce qui causait parfois des problèmes. Par exemple, au démarrage suivant, le gestionnaire de table InnoDB devait faire une restauration après crash. Depuis MySQL version 3.23.48, Windows attend plus longtemps que MySQL s'arrête. Si vous notez que ce temps n'est pas suffisant pour votre installation, il est recommandé de ne pas utiliser MySQL sous forme de service, mais à partir de la ligne de commande, et de l'éteindre manuellement avec mysqladmin shutdown.

Il y a ce problème avec Windows NT (mais pas Windows 2000/XP), qui, par défaut, attend 20 secondes l'extinction d'un service, puis tue le processus. Vous pouvez augmenter ce délai en ouvrant l'éditeur de base de registre `\winnt\system32\regedt32.exe' et en modifiant la valeur de WaitToKillServiceTimeout dans `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control'. Spécifiez une nouvelle valeur en millisecondes, par exemple 120000 pour que Windows NT attende désormais jusqu'à 120 secondes.

Notez que lorsqu'il fonctionne comme un service, mysqld-max-nt n'a pas d'accès à la console, et ainsi, aucun mesasge n'est disponible. Les erreurs sont alors stockées dans le fichier `c:\mysql\data\mysql.err'.

Si vous avez des problèmes à installer mysqld-max-nt comme service, essayer de le démarrer en utilisant le chemin complet :

C:\> C:\mysql\bin\mysqld-max-nt --install

Si cela ne fonctionne pas, vous pouvez faire démarrer proprement mysqld-max-nt en modifiant le chemin dans la base de registre.

Si vous ne voulez pas démarrer mysqld-max-nt comme service, vous pouvez le démarrer comme ceci :

C:\> C:\mysql\bin\mysqld-max-nt --standalone

ou

C:\> C:\mysql\bin\mysqld --standalone --debug

Cette dernière méthode vous donnera une trace de débogage dans le fichier `C:\mysqld.trace'. See section D.1.2 Créer un fichier de traçage.

2.6.2.3 Faire fonctionner MySQL sous Windows

MySQL supporte TCP/IP sur toutes les plate-formes Windows et les tunnels nommés sur NT/2000/XP. Par défaut, les tunnels nommés sont utilisés sur NT/2000/XP pour les connexions locales et TCP/IP pour tout les autres cas si le client à TCP/IP d'installé. Le nom d'hôte spécifie le protocole à utiliser :

Nom d'hôte Protocole
NULL (aucun) Sur NT/2000/XP, essayer les tunnels nommés avant; si cela ne fonctionne pas, utiliser TCP/IP. Sur 9x/Me, TCP/IP est utilisé.
. Tunnels nommés
localhost TCP/IP vers l'hôte courant
hostname TCP/IP

Vous pouvez forcer un client MySQL à utiliser les tunnels nommés en spécifiant l'option --pipe ou en spécifiant le nom d'hôte . en tant que nom d'hôte. Utilisez l'option --socket pour spécifier le nom du tunnel.

Notez qu'à partir de la version 3.23.50, les tunnels nommés ne sont activés que si mysqld est démarré avec --enable-named-pipe. Il en est ainsi car certains utilisateurs ont rencontré des problèmes en coupant le serveur MySQL lorsque celui-ci utilise des tunnels nommés.

Vous pouvez vérifier si MySQL fonctionne en exécutant les commandes suivantes :

C:\> C:\mysql\bin\mysqlshow
C:\> C:\mysql\bin\mysqlshow -u root mysql
C:\> C:\mysql\bin\mysqladmin version status proc
C:\> C:\mysql\bin\mysql test

Si mysqld est lent à répondre aux connexions sur Windows 9x/Me, il y a probablement un problème avec vos DNS. Dans ce cas, démarrez mysqld avec --skip-name-resolve et utilisez localhost et les adresses IP dans les tables de droits MySQL. Vous pouvez aussi éviter les DNS lors de la connexion à un serveur mysqld-nt MySQL tournant sur NT/2000/XP en utilisant l'argument --pipe pour spécifier l'utilisation des tunnels nommés. Cela fonctionne pour la plupart des clients MySQL.

Il y a deux versions de l'outil en ligne de commande MySQL :
Binaire Description
mysql Compilé nativement sur Windows, ce qui fournit des possiblités très limitées d'édition de texte.
mysqlc Compilé avec le compilateur Cygnus GNU et librairies, ce qui fournit l'édition readline.

Si vous voulez utiliser mysqlc.exe, vous devez copier `C:\mysql\lib\cygwinb19.dll' dans le répertoire système de Windows (`\windows\system' ou un endroit similaire).

Les privilèges par défaut sur Windows donnent un accès à tous les utilisateurs locaux pour toutes les bases de données sans spécifier de mot de passe. Pour rendre MySQL un peu plus sécurisé, vous devez définir un mot de passe pour tout les utilisateurs et supprimer la ligne dans la table mysql.user qui contient Host='localhost' et User=''.

Vous devez aussi ajouter un mot de passe pour le nouvel utilisateur root. L'example suivant commence par supprimer l'utilisateur anonyme qui possède tous les privilèges, puis configure un mot de passe pour l'utilisateur root :

C:\> C:\mysql\bin\mysql mysql
mysql> DELETE FROM user WHERE Host='localhost' AND User='';
mysql> QUIT
C:\> C:\mysql\bin\mysqladmin reload
C:\> C:\mysql\bin\mysqladmin -u root password votre_mot_de_passe

Après avoir changé le mot de passe, si vous voulez couper le serveur mysqld, vous pouvez le faire en utilisant la commande :

C:\> mysqladmin --user=root --password=votre_mot_de_passe shutdown

Si vous utilisez la vielle version 3.21 de MySQL sous Windows, la commande précédente échouera avec l'erreur : parse error near 'SET password'. La solution est de mettre à jour à la dernière version de MySQL qui est maintenant disponible.

Avec les versions courantes de MySQL vous pouvez facilement ajouter des utilisateurs et changer les privilèges avec les commandes GRANT et REVOKE. See section 4.3.1 Syntaxe de GRANT et REVOKE.

2.6.2.4 Connexion à un serveur MySQL distants, sous Windows avec SSH

Voici une note pour connecter un serveur MySQL avec une connexion sécurisée grâce à SSH (de David Carlson dcarlson@mplcomm.com) :

Vous avez maintenant une connexion ODBC avec un serveur MySQL distant, et sécurisée avec SSH.

2.6.2.5 Paratger les données entre plusieurs disque sous Windows

A partir de la version 3.23.16 de MySQL, les serveurs mysqld-max et mysql-max-nt dans les distributions MySQL sont compilés avec l'option -DUSE_SYMDIR. Cela vous permet de placer une base de données sur un disque différent en lui ajoutant un lien symbolique (c'est d'une certaine manière similaire au fonctionnement des liens symboliques sous Unix).

Sous Windows, vous créez un lien symbolique vers la base de données en créant un fichier qui contient le cheminvers le répertoire de destination et en le sauvant dans le répertoire `mysql_data' sous le nom `database.sym'. Notez que le lien symbolique ne sera utilisé que si le répertoire `mysql_data_dir\database' n'existe pas.

Par exemple, si le répertoire des données de MySQL est `C:\mysql\data' et que vous voulez avoir une base de données foo située dans `D:\data\foo', vous devez créer le fichier `C:\mysql\data\foo.sym' qui contient le texte D:\data\foo\. Après cela, toutes les tables crées dans foo le seront dans `D:\data\foo'.

Notez qu'à cause de la pénalité sur la vitesse que vous obtenez en ouvrant toutes les tables, nous n'avons pas activé cela par défaut, même si vous avez compilé MySQL avec le support des liens symboliques. Pour les activer, vous devez placer dans votre fichier `my.cnf' ou `my.ini' l'entrée suivante :

[mysqld]
use-symbolic-links

En MySQL 4.0 nous activerons les liens symboliques par défaut. Vous devrez alors utiliser l'option skip-symlink pour les désactiver.

2.6.2.6 Compiler les clients MySQL sous Windows

Dans vos fichiers sources, vous devez inclure `windows.h' avant `mysql.h' :

#if defined(_WIN32) || defined(_WIN64)
#include <windows.h>
#endif
#include <mysql.h>

Vous pouvez soit lier votre code avec la librairie dynamique `libmysql.lib', qui est juste une interface pour charger `libmysql.dll' à la demande, soit lier avec la librairie statique `mysqlclient.lib'.

Notez que puisque les librairies mysqlclient sont compilées en tant que librairies threadées, vous devez aussi compiler votre code pour qu'il soit multi-thréadé !

2.6.2.7 MySQL pour Windows face à MySQL pour Unix

MySQL pour Windows a prouvé qu'il était très stable. Cette version de MySQL a les mêmes fonctionnalités que la version Unix, a quelques exceptions :

Windows 95 et les threads
Windows 95 perf environs 200 octets de mémoire central lors de la création de chaque thread. Chaque connexion MySQL crée un nouveau thread, ce qui fait qu'il n'est pas recommandé d'exécuter mysqld pour des durées longues sur Windows 95 si votre serveur gère de nombreuses connexions. Les autres versions de Windows ne souffrent pas du même problème.
Lectures concurrentes
MySQL dépends des fonctions pread() et pwrite() pour être capable de mêler des INSERT et des SELECT. Actuellement, nous utilise mutexes pour émuler les fonctions pread()/pwrite(). Nous allons, à long terme, remplacer ce niveau d'interface par une interface virtuelle de façon à ce que nous puissions utiliser l'interface readfile()/writefile() de Windows NT/2000/XP pour gagner de la vitesse. L'implémentation courante limite le nombre de fichiers ouverts par MySQL à 1024, ce qui signifie que vous ne pouvez pas utiliser d'aussi nombreux threads concurrents sur NT/2000/XP que sur Unix.
Blocking read
MySQL utilise une lecture bloquée pour chaque connexion. Cela signifie que : Nous envisageons de corriger ce problème, lorsque les développeurs Windows auront fourni un palliatif.
DROP DATABASE
Vous ne pouvez pas détruire une base qui est utilisée par un autre thread.
Killing MySQL from the task manager
Vous ne pouvez pas tuer MySQL depuis le gestionnaire de tâche ou avec un utilitaire d'extinction de Windows 95. Vous devez l'éteindre avec mysqladmin shutdown.
Noms sensibles à la casse
Les noms de fichiers sont insensibles à la casse sous Windows, ce qui fait que les noms de tables et de bases ne sont pas sensibles à la casse pour MySQL sur Windows. La seule restriction est que les noms de tables et de bases doivent être donnés avec même casse dans le nom (tout en majuscules, ou en minuscules). See section 6.1.3 Sensibilité à la casse pour les noms.
Le caractère `\'
Les composants d'un chemin sont séparés par le caractère `\' sous Windows, qui est aussi le caractère de protection de MySQL. Si vous utilisez la commande LOAD DATA INFILE ou SELECT ... INTO OUTFILE, vous devez doubler le caractère `\' :
mysql> LOAD DATA INFILE "C:\\tmp\\skr.txt" INTO TABLE skr;
mysql> SELECT * INTO OUTFILE 'C:\\tmp\\skr.txt' FROM skr;
Alternativement, vous pouvez utiliser les noms de fichiers au format Unix, avec le caractère `/' :
mysql> LOAD DATA INFILE "C:/tmp/skr.txt" INTO TABLE skr;
mysql> SELECT * INTO OUTFILE 'C:/tmp/skr.txt' FROM skr;
Can't open named pipe erreur
Si vous utilisez MySQL 3.22 sous NT avec les derniers clients mysql, vous allez obtenir cette erreur :
error 2017: can't open named pipe to host: . pipe...
Ceci est dû au fait que les versions modernes de MySQL utilisent des pipes nommés sous NT, par défaut. Pour éviter cette erreur, vous devez utiliser l'option --host=localhost sur les nouveaux clients, ou bien créer le fichier d'options `C:\my.cnf', qui contiendra les informations suivantes :
[client]
host = localhost
Depuis la version 3.23.50, les pipes nommés sont les seuls activés si mysqld est démarré avec --enable-named-pipe.
Erreur Access denied for user
Si vous rencontrez l'erreur Access denied for user: 'utilisateur@unknown' to database 'mysql' lors de l'accès au serveur MySQL sur la même machine, cela signifie que MySQL ne peut résoudre proprement votre nom d'hôte. Pour corriger cela, vous devriez créer un fichier `\windows\hosts' dans l'information suivante :
127.0.0.1       localhost
ALTER TABLE
Lorsque vous exécutez la commande ALTER TABLE, la table est verrouillé, empêchant les autres threads d'y accéder. Cela est lié au fait que sous Windows, vous ne pouvez pas effacer un fichier qui est en cours d'utilisation par d'autres threads : à l'avenir, vous pourrions trouver un moyen de contourner ce problème.
La commande DROP TABLE sur une table qui est utilisée dans le cadre d'un MERGE ne fonctionne pas sous Windows, car le gestionnaire de MERGE garde la carte des tables cachée de la couche supérieure de MySQL. Comme Windows ne vous autorise pas à effacer des fichiers qui sont ouverts, vous devez d'abord vider de la mémoire toutes les tables du MERGE (avec la commande FLUSH TABLES) puis effacer la table MERGEavant d'effacer les tables. Nous allons corriger cela lorsque nous introduirons la notion de VIEWs.
Les directives DATA DIRECTORY et INDEX DIRECTORY de CREATE TABLE sont ignorées sous Windows, car Windows ne supporte pas les liens symboliques.

Voici quelques problèmes connus et pas encore corrigés, si jamais quelqu'un souhaite nous aider sur la version Windows :

D'autres spécificités de Windows sont décrites dans le fichier `README' qui est livré avec la distribution Windows de MySQL.

2.6.3 Remarques pour Solaris

Sous Solaris, vous pouvez renontrer des problèmes avant même d'avoir désarchivé la distribution MySQL! Le programme tar de Solaris ne peut pas manipuler de noms de fichiers longs, provoquant les messages suivants quand vous décompressez MySQL :

x mysql-3.22.12-beta/bench/Results/ATIS-mysql_odbc-NT_4.0-cmp-db2,\
informix,ms-sql,mysql,oracle,solid,sybase, 0 bytes, 0 tape blocks
tar: directory checksum error

Dans ce cas, vous devez utiliser GNU tar (gtar) pour désarchiver la distribution. Vous pouvez en trouver une copie précompilée pour Solaris sur http://www.mysql.com/downloads/os-solaris.html.

La gestion native des threads Sun fonctionne uniquement depuis Solaris 2.5. Pour les versions 2.4 et antérieures, MySQL utilisera automatiquement les MIT-pthreads. See section 2.3.6 Notes relatives aux MIT-pthreads.

Vous pouvez rencontrer les erreurs suivantes lors du configure:

checking for restartable system calls... configure: error can not run test
programs while cross compiling

Cela signifie que l'installation de votre compilateur est défectueuse! Dans ce cas, vous devez mettre à jour votre compilateur en faveur d'une version plus récente. Vous pouvez aussi résoudre le problème en inérant la ligne suivante dans le fichier `config.cache' :

ac_cv_sys_restartable_syscalls=${ac_cv_sys_restartable_syscalls='no'}

Si vous utilisez Solaris sur une architecture SPARC, nous recommandons gcc 2.95.2 comme compilateur. Vous pouvez le trouver sur http://gcc.gnu.org/. Notez que egcs 1.1.1 et gcc 2.8.1 ne fonctionnent pas correctement sur SPARC!

La ligne configure recommandée dans le cas de l'utilisation de gcc 2.95.2 est:

CC=gcc CFLAGS="-O3" \
CXX=gcc CXXFLAGS="-O3 -felide-constructors -fno-exceptions -fno-rtti" \
./configure --prefix=/usr/local/mysql --with-low-memory --enable-assembler

Si vous avez une machine UltraSPARC, vous pouvez gagner 4% de performances supplémentaires en ajoutant "-mcpu=v8 -Wa,-xarch=v8plusa" à CFLAGS et CXXFLAGS.

Si vous utilisez le compilateur Forte 5.0 (et supérieur) de Sun, vous pouvez lancer configure de la façon suivante :

CC=cc CFLAGS="-Xa -fast -native -xstrconst -mt" \
CXX=CC CXXFLAGS="-noex -mt" \
./configure --prefix=/usr/local/mysql --enable-assembler

Vous pouvez créer un binaire 64 bits avec :

CC=cc CFLAGS="-Xa -fast -native -xstrconst -mt -xarch=v9" \
CXX=CC CXXFLAGS="-noex -mt -xarch=v9" \
./configure --prefix=/usr/local/mysql --enable-assembler

Lors de bancs de tests MySQL, nous avons gagné 4% en vitesse sur une UltraSPARC en utilisant Forte 5.0 en mode 32 bits plutôt que gcc 3.2 avec les marqueurs -mcpu.

Si vous créez un binaire 64 bits, il est de 4% plus lent que le binaire 32 bits, mais en contrepartie vous pouvez gérer davantage de treads et de mémoire.

Si vous rencontrez des problèmes avec fdatasync ou sched_yield, vous pouvez les résoudre en ajoutant LIBS=-lrt à la ligne configure.

Le paragraphe suivant ne s'applique qu'aux compilateurs plus anciens que WorkShop 5.3 :

Vous pouvez avoir à modifier le script configure et changer la ligne :

#if !defined(__STDC__) || __STDC__ != 1

en :

#if !defined(__STDC__)

Si vous activez __STDC__ avec l'option -Xc, le compilateur Sun ne peut pas compiler avec le fichier d'entêtes `pthread.h' de Solaris. C'est un bogue de Sun (compilateur ou fichier d'inclusion défectueux).

Si mysqld génère les messages d'erreur suivants lorsque vous le lancez, cela est du au fait que vous avez compilé MySQL avec le compilateur de Sun sans activer l'option multi-threads (-mt):

libc internal error: _rmutex_unlock: rmutex not held

Ajoutez -mt à CFLAGS et CXXFLAGS puis réessayez.

Si vous utilisez la version SFW de gcc (fournie avec Solaris 8), vous devez ajouter `/opt/sfw/lib' à la variable d'environnement LD_LIBRARY_PATH avant de lancer le configure.

Si vous utilisez le gcc disponible sur sunfreeware.com, vous pouvez rencontrer de nombreux problèmes. Vous devriez recompiler gcc et les GNU binutils sur la machine à partir de laquel vous les utiliserez, afin d'éviter tout souci.

Si vous obtenez l'erreur suivante lorsque vous compilez MySQL avec gcc, cela signifie que votre gcc n'est pas configuré pour votre version de Solaris :

shell> gcc -O3 -g -O2 -DDBUG_OFF  -o thr_alarm ...
./thr_alarm.c: In function `signal_hand':
./thr_alarm.c:556: too many arguments to function `sigwait'

La meilleure chose à faire dans ce cas est d'obtenir la version la plus récente de gcc et de compiler avec votre gcc actuel! Au moins pour Solaris 2.5, la plupart des versions binaires de gcc ont d'anciens fichiers d'inclusion inutilisables qui planteront les programmes qui utilisent les threads (ainsi probablement d'autres programmes)!

Solaris ne fournit pas de versions statiques de toutes les librairies système (libpthreads et libdl), vous ne pouvez donc pas compiler MySQL avec --static. Si vous tentez de le faire, vous obtiendrez l'erreur :

ld: fatal: library -ldl: not found

ou

undefined reference to `dlopen'

ou

cannot find -lrt

Si de nombreux processus essaient de se connecter très rapidement à mysqld, vous verrez cette erreur dans le journal MySQL :

Error in accept: Protocol error

Pour éviter cela, vous pouvez lancer le serveur avec l'option --set-variable back_log=50. Veuillez noter que --set-variable est déprécié depuis MySQL 4.0, utilisez uniquement --back_log=50. See section 4.1.1 Options de ligne de commande de mysqld.

Si vous liez votre propre client MySQL, vous pouvez avoir l'erreur suivante quand vous le lancez :

ld.so.1: ./my: fatal: libmysqlclient.so.#:
open failed: No such file or directory

Le problème peut être évité avec l'une des méthodes suivantes :

Si vous avez des soucis avec configure qui essaie de lier avec -lz et que vous n'avez pas installé zlib, vous avez deux solutions :

Si vous utilisez gcc et rencontrez des problèmes en chargeant la fonction UDF dans MySQL, essayez d'ajouter -lgcc à la ligne de liaison de la fonction UDF.

Si vous voulez que MySQL se lance automatiquement, vous pouvez copier `support-files/mysql.server' dans `/etc/init.d' et créer un lien symbolique pointant dessus et s'appelant `/etc/rc3.d/S99mysql.server'.

Comme Solaris ne supporte pas les fichiers core pour les applications setuid(), vous ne pouvez pas obtenir un fichier core de mysqld si vous utilisez l'option --user.

2.6.3.1 Notes relatives à Solaris 2.7/2.8

Vous pouvez normalement utiliser les binaires Solaris 2.6 sur Solaris 2.7 et 2.8. La plupart des fonctionnalitées de Solaris 2.6 s'appliquent aussi à Solaris 2.7 et 2.8.

Notez que la version 3.23.4 de MySQL et plus doivent être capables de détecter automatiquement les nouvelles versions de Solaris et d'activer les parades pour résoudre les problèmes suivants !

Solaris 2.7 / 2.8 ont quelques bogues dans les fichiers inclus. Vous verrez peut-être l'erreur suivante en utilisant gcc :

/usr/include/widec.h:42: warning: `getwc' redefined
/usr/include/wchar.h:326: warning: this is the location of the previous
definition

Si cela arrive, vous pouvez faire ce qui suit pour résoudre ce problème :

Copiez /usr/include/widec.h vers .../lib/gcc-lib/os/gcc-version/include et changez la ligne 41 de :

#if     !defined(lint) && !defined(__lint)

en

#if     !defined(lint) && !defined(__lint) && !defined(getwc)

Alternativement, vous pouvez éditer directement le fichier `/usr/include/widec.h'. De toutes façons, après avoir apporté la correction, vous devez effacer `config.cache' et exécuter configure à nouveau !

Si vous obtenez des erreurs comme celles qui suivent quand vous exécutez make, c'est parce que configure n'a pas détecté le fichier `curses.h' (probablement à cause de l'erreur dans `/usr/include/widec.h') :

In file included from mysql.cc:50:
/usr/include/term.h:1060: syntax error before `,'
/usr/include/term.h:1081: syntax error before `;'

La solution est de faire l'une des choses qui suit :

Si vous obtenez une erreur disant que votre programme de liaison ne peut trouver -lz lors de la liaison du programme de votre client, le problème est probablement que votre fichier `libz.so' est installé dans `/usr/local/lib'. Vous pouvez corriger ceci en utilisant l'une des méthodes suivantes :

2.6.3.2 Remarques pour Solaris x86

Sous Solaris 2.8 sur x86, mysqld va crasher (core dump) si vous l'exécutez 'strip'.

Si vous utilisez gcc ou egcs sous Solaris x86 et que vous rencontrez des problèmes avec des coredumps, lorsqu'il y a de la charge, il est recommandé d'utiliser la commande de configure suivante :

CC=gcc CFLAGS="-O3 -fomit-frame-pointer -DHAVE_CURSES_H" \
CXX=gcc \
CXXFLAGS="-O3 -fomit-frame-pointer -felide-constructors -fno-exceptions \
-fno-rtti -DHAVE_CURSES_H" \
./configure --prefix=/usr/local/mysql

Cela va éviter les problèmes avec la librairie libstdc++ et avec les exceptions C++.

Si cela ne vous aide pas, il est recommandé de compiler une version de débogage, et de l'exécuter avec un fichier de trace sous gdb. See section D.1.3 Déboguer mysqld sous gdb.

2.6.4 Notes relatives à BSD

Cette section fournit des informations pour les différentes variétés de BSD, ainsi que les versions spécifiques de celles-ci.

2.6.4.1 Notes relatives à FreeBSD

FreeBSD 3.x est recommandé pour exécuter MySQL vu que le package des threads est plus intégré.

La façon la plus facile et la plus conseillée d'installer est d'utiliser les ports du serveur et du client MySQL disponibles sur http://www.freebsd.org/.

Les utiliser vous donnera :

Il est recommandé d'utiliser les MIT-pthreads sur FreeBSD 2.x et les threads natifs sur les versions 3 et plus. Il est possible de faire fonctionner le tout avec les threads natifs sur les dernières versions 2.2.x mais vous rencontrerez probablement des problèmes en coupant mysqld.

Le `Makefile' de MySQL requière GNU make (gmake) pour fonctionner. Si vous voulez compiler MySQL vous devez d'abord installer GNU make.

Assurez-vous que votre configuration de la résolution des noms est bonne. Sinon, vous airez peut-être quelques problèmes lors de la connexion à mysqld.

Assurez vous que l'entrée localhost dans le fichier `/etc/hosts' est correcte (sinon, vous aurez des problèmes pour vous connecter à la base de données). Le fichier `/etc/hosts' doit commencer par :

127.0.0.1       localhost localhost.votre.domaine

La manière recommandée de compiler et d'installer MySQL sur FreeBSD avec gcc (2.95.2 et plus) est :

CC=gcc CFLAGS="-O2 -fno-strength-reduce" \
CXX=gcc CXXFLAGS="-O2 -fno-rtti -fno-exceptions -felide-constructors \
-fno-strength-reduce" \
./configure --prefix=/usr/local/mysql --enable-assembler
gmake
gmake install
./scripts/mysql_install_db
cd /usr/local/mysql
./bin/mysqld_safe &

Si vous vous apercevez que configure utilisera les MIT-pthreads, vous devriez lire les notes relatives aux MIT-pthreads. See section 2.3.6 Notes relatives aux MIT-pthreads.

Si vous obtenez une erreur de make install disant qu'il ne peut trouver `/usr/include/pthreads', configure n'a pas détecté que vous avez besoin des MIT-pthreads. Cela est corrigé en exécutant ces commandes :

shell> rm config.cache
shell> ./configure --with-mit-threads

FreeBSD est aussi connu pour avoir une petite limite de gestionnaires de fichiers par défaut. See section A.2.16 Fichier non trouvé. Décommentez la section ulimit -n dans safe_mysqld ou enlevez la limite pour l'utilisateur mysqld dans /etc/login.conf (et regénérez le avec cap_mkdb). Assurez-vous aussi de définir la classe appropriée pour cet utilisateur dans le fichier des mots de passe si vous n'utilisez pas celui par défaut. (utilisez : chpass nom-utilisateur-mysqld). See section 4.7.2 safe_mysqld, le script père de mysqld.

Si vous avez beaucoup de mémoire, vous devriez penser à recompiler le noyau pour permettre à MySQL d'utiliser plus de 512M de RAM. Regardez l'option MAXDSIZ dans le fichier de configuration de LINT pour plus d'informations.

Si vous avez des problèmes avec la date courante dans MySQL, configurer la variable d'environnement TZ aidera sûrement. See section E Variables d'environnement.

Pour obtenir un système sécurisé et stable, vous ne devez utiliser que les noyaux FreeBSD marqués -RELEASE.

2.6.4.2 Notes concernant NetBSD

Pour compiler sur NetBSD vous aurez besoin de GNU make. Sinon, la compilation stoppera lorsque make essayera d'exécuter lint sur les fichiers C++.

2.6.4.3 Notes relatives à OpenBSD 2.5

Dans la version 2.5 de OpenBSD, vous pouvez compiler MySQL avec les threads natifs avec les options suivantes :

CFLAGS=-pthread CXXFLAGS=-pthread ./configure --with-mit-threads=no

2.6.4.4 Notes relatives à OpenBSD 2.8

Nos utilisateurs nous ont informé que OpenBSD 2.8 comporte un bogue des threads qui pose quelques problèmes avec MySQL. Les développeurs d'OpenBSD ont résolu ce problème, mais depuis le 25 janvier 2001 ce n'est disponible que dans la branche ``-current''. Les symptômes de ce bogue sont : réponses lentes, beaucoup de charge, grande utilisation du CPU, et crashes.

Si vous obtenez une erreur comme Error in accept:: Bad file descriptor ou erreur 9 en essayant d'ouvrir les tables ou les dossiers, le problème est probablement que vous n'avez pas alloué assez de descripteurs de fichiers à MySQL.

Dans ce cas, essayez de démarrer safe_mysqld en tant que root avec les options suivantes :

--user=mysql --open-files-limit=2048

2.6.4.5 Notes relatives aux versions 2.x de BSD/OS

Si vous obtenez l'erreur suivante lors de la compilation de MySQL, votre valeur de ulimit pour la mémoire vortuelle est trop petite :

item_func.h: In method `Item_func_ge::Item_func_ge(const Item_func_ge &)':
item_func.h:28: virtual memory exhausted
make[2]: *** [item_func.o] Error 1

Essayez d'utiliser ulimit -v 80000 et exécutez make à nouveau. Si cela ne fonctionne pas et que vous utilisez bash, essayez de passer à csh ou sh; quelques utilisateurs de BSDI ont reporté des problèmes avec bash et ulimit.

Si vous utilisez gcc, vous aurez peut-être aussi à utiliser l'option --with-low-memory de configure pour pouvoir compiler `sql_yacc.cc'.

Si vous avez des problèmes avec la date courante dans MySQL, configurer la variable TZ vous aidera probablement. See section E Variables d'environnement.

2.6.4.6 Notes relatives aux versions 3.x de BSD/OS

Mettez à jour à la version 3.1 de BSD/OS. Si cela n'est pas possible, installez le patch BSDIpatch M300-038.

Utilisez la commande suivante lors de la configuration de MySQL :

shell> env CXX=shlicc++ CC=shlicc2 \
       ./configure \
           --prefix=/usr/local/mysql \
           --localstatedir=/var/mysql \
           --without-perl \
           --with-unix-socket-path=/var/mysql/mysql.sock

Ce qui suit fonctionne aussi :

shell> env CC=gcc CXX=gcc CXXFLAGS=-O3 \
       ./configure \
           --prefix=/usr/local/mysql \
           --with-unix-socket-path=/var/mysql/mysql.sock

Vous pouvez changer les répertoires si vous voulez, ou utiliser les valeurs par défaut en ne spécifiant pas de chemins.

Si vous avez des problèmes de performances alors que la charge est petite, essayez d'utiliser l'option --skip-thread-priority de mysqld ! Cela exécutera tous les threads avec la même priorité; Sur la version 3.1 de BSDI, cela donne de meilleures performances (en attendant que BSDI corrige sont gestionnaire de threads).

Si vous obtenez l'erreur virtual memory exhausted durant la compilation, vous devez essayer en utilisant ulimit -v 80000 et exécutant make à nouveau. Si cela ne fonctionne pas et que vous utilisez bash, essayez de passer à csh ou sh; quelques utilisateurs de BSDI ont reporté des problèmes avec bash et ulimit.

2.6.4.7 Notes relatives aux versions 4.x de BSD/OS

Les versions 4.x de BSDI ont quelques bogues relatifs aux threads. Si vous voulez utiliser MySQL sur ce système, vous devez installer tous les patches liés aux threads. vous devez au moins installer M400-023.

Sur quelques systèmes avec une version 4.x de BSDI, vous pouvez rencontrer des problèmes avec les librairies partagées. Le symptôme est que vous ne pouvez utiliser aucun programme client, comme par exemple, mysqladmin. Dans ce cas, vous devez le reonfigurer pour qu'il n'utilise pas les librairies paratgées avec l'option --disable-shared de configure.

Quelques utilisateurs ont eu avec BSDI 4.0.1 un problème faisant qu'après un bout de temps, le binaire mysqld ne peut plus ouvrir de tables. Cela est du au fait qu'un bogue relatif au système ou à la librairie fait changer de répertoire à mysqld sans qu'on ne l'ait demandé !

La solution est soit de mettre à jour vers la version 3.23.34 ou de supprimer la ligne #define HAVE_REALPATH de config.h après avoir exécuté configure et avant d'exécuter make.

Notez que ce qui précède signifie que vous ne pouvez pas créer de lien symbolique sur un dossier de bases de données vers un autre dossier de bases de données ou lier une table symboliquement vers une autre base de données sur BSDI ! (Créer un lien symbolique vers un autre disque fonctionne).

2.6.5 Notes relatives à Mac OS X

2.6.5.1 Mac OS X 10.x

MySQL devrait fonctionner sans problème avec les versions Mac OS X 10.x (Darwin). Vos n'avez pas besoin du patch pour les pthread sur cet OS!

Cela s'applique aussi à Mac OS X 10.x Server. La compilation pour la plate-forme serveur est identique à la compilation pour pa version client de Mac OS X. Toutes fois, notez que MySQL est pré-installé sur la version Server!

See section 2.1.3 Installer MySQL sur Mac OS X.

2.6.5.2 Mac OS X Server 1.2 (Rhapsody)

Avant d'essayer de configurer MySQL sur Mac OS X Server, vous devez d'abord installer le paquet pthread depuis http://www.prnet.de/RegEx/mysql.html.

Notre programme binaire Mac OS X est compilé sur Darwin 6.3 avec la liste suivante d'options de configuration :

CC=gcc CFLAGS="-O3 -fno-omit-frame-pointer" CXX=gcc \
CXXFLAGS="-O3 -fno-omit-frame-pointer -felide-constructors \
-fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql \
--with-extra-charsets=complex --enable-thread-safe-client \
--enable-local-infile --disable-shared

Vous pouvez aussi ajouter des alias dans votre fichier de ressources Shell, pour accéder à mysql et mysqladmin depuis la ligne de commande :

alias mysql '/usr/local/mysql/bin/mysql'
alias mysqladmin '/usr/local/mysql/bin/mysqladmin'

Alternativement, vous pouvez simplement ajouter /usr/local/mysql/bin à votre variable d'environnement PATH, i.e. en ajouter la ligne suivante à votre fichier `$HOME/.tcshrc':

setenv PATH $PATH:/usr/local/bin

2.6.6 Notes sur les autres Unix

2.6.6.1 Notes relatives à HP-UX pour les distributions binaires

Quelques distributions binaires de MySQL pour HP-UX sont distribués en tant que fichier depot HP et archive tar. Pour utiliser le fichier depot, vous devez avoir au moins HP-UX 10.x pour avoir accès aux outils depot de HP.

La version HP de MySQL a été compilée sur un serveur HP 9000/8xx sous HP-UX 10.20, et utilise les MIT-pthreads. Elle est connue pour bien fonctionner sous cette configuration. A partir de la version 3.22.26 de MySQL vous pouvez aussi compiler avec le package de threads natifs HP.

Autres configurations pouvant fonctionner :

Les configurations suivantes semblent ne jamais vouloir fonctionner :

Pour installer la distribution, utilisez l'une des commandes suivantes, où /chemin/vers/depot est le chemin complet vers le fichier dépôt :

Le depot place les binaires et les librairies dans `/opt/mysql' et les données dans `/var/opt/mysql'.Le depot crée aussi les entrées appropriées dans `/etc/init.d' et `/etc/rc2.d' pour démarrer le serveur automatiquement lors du boot. Evidemment, il faut être root pour installer.

Pour installer la distribution HP-UX tar.gz, vous devez avoir une copie de GNU tar.

2.6.6.2 Notes relatives à la version 10.20 de HP-UX

Il y a quelques petits problèmes que vous pourrez rencontrer lors de la compilation de MySQL sur HP-UX. Nous recommandons l'utilisation de gcc au lieu du compilateur natif de HP-UX, car gcc produit un meilleur code !

Nous recommandons l'utilisation de gcc 2.95 sur HP-UX. N'utilisez pas les options de haute optimisation (comme -O6) car cela pourrait ne pas être sûr sur HP-UX.

La ligne de configuration suivante devrait fonctionner avec gcc 2.95 :

CFLAGS="-I/opt/dce/include -fpic" \
CXXFLAGS="-I/opt/dce/include -felide-constructors -fno-exceptions \
-fno-rtti" CXX=gcc ./configure --with-pthread \
--with-named-thread-libs='-ldce' --prefix=/usr/local/mysql --disable-shared

La ligne de configuration suivante devrait fonctionner avec gcc 3.1 :

CFLAGS="-DHPUX -I/opt/dce/include -O3 -fPIC" CXX=gcc \
CXXFLAGS="-DHPUX -I/opt/dce/include -felide-constructors -fno-exceptions \
-fno-rtti -O3 -fPIC" ./configure --prefix=/usr/local/mysql \
--with-extra-charsets=complex --enable-thread-safe-client \
--enable-local-infile  --with-pthread \
--with-named-thread-libs=-ldce --with-lib-ccflags=-fPIC
--disable-shared

2.6.6.3 HP-UX Version 11.x Notes

Pour les version 11.x de HP-UX nous recommandons MySQL 3.23.15 ou plus récent.

A cause de quelques bogues critiques dans les librairies standard de HP-UX, vous devez installer les patches suivants avant d'essayer de faire fonctionner MySQL sous HP-UX 11.0 :

PHKL_22840 Streams cumulative
PHNE_22397 ARPA cumulative

Cela résoudra le problème de l'obtention de EWOULDBLOCK à partir de recv() et EBADF à partir de accept() dans les applications threadées.

Si vous utilisez gcc 2.95.1 sur un système HP-UX 11.x non-patché, vous obtiendrez l'erreur :

In file included from /usr/include/unistd.h:11,
                 from ../include/global.h:125,
                 from mysql_priv.h:15,
                 from item.cc:19:
/usr/include/sys/unistd.h:184: declaration of C function ...
/usr/include/sys/pthread.h:440: previous declaration ...
In file included from item.h:306,
                 from mysql_priv.h:158,
                 from item.cc:19:

Le problème est que HP-UX ne définit pas pthreads_atfork() avec consistence. Il possède des prototypes en conflit dans `/usr/include/sys/unistd.h':184 et `/usr/include/sys/pthread.h':440 (détails ci-dessous).

Une solution est de copier `/usr/include/sys/unistd.h' dans `mysql/include' et éditer `unistd.h' en le changeant pour qu'il corresponde à la définition dans `pthread.h'. Voici les modifications :

183,184c183,184
<      extern int pthread_atfork(void (*prepare)(), void (*parent)(),
<                                                void (*child)());
---
>      extern int pthread_atfork(void (*prepare)(void), void (*parent)(void),
>                                                void (*child)(void));

Après cela, la ligne de configuration suivante devrait fonctionner :

CFLAGS="-fomit-frame-pointer -O3 -fpic" CXX=gcc \
CXXFLAGS="-felide-constructors -fno-exceptions -fno-rtti -O3" \
./configure --prefix=/usr/local/mysql --disable-shared

Si vous utilisez MySQL 4.0.5 avec le compilateur HP-UX, vous pouvez utiliser : (testé avec cc B.11.11.04):

CC=cc CXX=aCC CFLAGS=+DD64 CXXFLAGS=+DD64 ./configure --with-extra-character-set=complex

Vous pouvez ignorer toutes les erreurs de ce type :

aCC: warning 901: unknown option: `-3': use +help for online documentation

Si vous obtenez l'erreur suivante de configure :

checking for cc option to accept ANSI C... no
configure: error: MySQL requires a ANSI C compiler (and a C++ compiler).
Try gcc. See the Installation chapter in the Reference Manual.

Vérifiez que le chemin vers le compilateur K&R ne précède pas le chemin vers le compilateur C et C++ HP-UX.

Une autre raison qui pourrait vous empêcher de compiler, et le fait de n'avoir pas définit l'option +DD64 ci-dessus.

2.6.6.4 Notes relatives à IBM-AIX

La détection automatique de xlC est absente de Autoconf, ce qui fait qu'un commande configure comme celle qui suit est requise lors de la compilation de MySQL (Cet exemple utilise le compilateur IBM) :

export CC="xlc_r -ma -O3 -qstrict -qoptimize=3 -qmaxmem=8192 "
export CXX="xlC_r -ma -O3 -qstrict -qoptimize=3 -qmaxmem=8192"
export CFLAGS="-I /usr/local/include"
export LDFLAGS="-L /usr/local/lib"
export CPPFLAGS=$CFLAGS
export CXXFLAGS=$CFLAGS

./configure --prefix=/usr/local \
		--localstatedir=/var/mysql \
		--sysconfdir=/etc/mysql \
		--sbindir='/usr/local/bin' \
		--libexecdir='/usr/local/bin' \
		--enable-thread-safe-client \
		--enable-large-files

Ce sont les options utilisées pour compiler la distribution de MySQL qui peut être trouvée sur http://www-frec.bull.com/.

Si vous changez le -O3 en -O2 dans la ligne précédente, vous devez aussi enlever l'option -qstrict (c'est une limitation du compilateur IBM C).

Si vous utilisez gcc ou egcs pour compiler MySQL, vous devez utiliser l'option -fno-exceptions, vu que la gestion des exceptions de gcc/egcs n'est pas sûre pour les threads ! (Cela est testé avec egcs 1.1.) Il y a aussi quelques problèmes connus avec l'assembleur d'IBM, qui peuvent lui faire générer du mauvais code lors de son utilisation avec gcc.

Nous recommandons la ligne de configure suivante avec egcs et gcc 2.95 sur AIX :

CC="gcc -pipe -mcpu=power -Wa,-many" \
CXX="gcc -pipe -mcpu=power -Wa,-many" \
CXXFLAGS="-felide-constructors -fno-exceptions -fno-rtti" \
./configure --prefix=/usr/local/mysql --with-low-memory

Le -Wa,-many est nécessaire pour que la compilation se passe sans problèmes. IBM est au courant de ce problème mais n'est pas pressé de le corriger à cause de l'existence du palliatif. Nous ne savons pas si -fno-exceptions est requise avec gcc 2.95, mais comme MySQL n'utilise pas les exeptions et que l'option en question génère un code plus rapide, nous vous recommandons de toujours utiliser cette option avec egcs / gcc.

Si vous obtenez un problème avec le code de l'assembleur essayez en changeant l'option -mcpu=xxx pour l'adapter à votre processeur. Le plus souvent, on a besoin de power2, power, ou powerpc, et sinon 604 ou 604e. Je ne suis pas positif mais je pense que l'utilisation de "power" sera sûre la plupart du temps, même sur une machine power2.

Si vous ne savez pas quel est votre processeur, exécutez "uname -m", cela vous renverra une chaîne comme "000514676700", avec un format xxyyyyyymmss où xx et ss sont toujours des zéros, yyyyyy est un identifiant unique du système et mm est l'identifiant du CPU Planar. Une liste de ces valeurs peut être trouvée sur http://publib.boulder.ibm.com/doc_link/en_US/a_doc_lib/cmds/aixcmds5/uname.htm. Cela vous donnera un type et un modèle de machine que vous pouvez utiliser pour déterminer quel type de processeur vous avez.

Si vous avez des problèmes avec les signaux (MySQL se termine de manière imprévue lors des montées en charge) vous avez peut-être trouvé un bogue du système avec les threads et les signaux. Dans ce cas, vous pouvez demander à MySQL de ne pas utiliser les signaux en configuration avec :

shell> CFLAGS=-DDONT_USE_THR_ALARM CXX=gcc \
       CXXFLAGS="-felide-constructors -fno-exceptions -fno-rtti \
       -DDONT_USE_THR_ALARM" \
       ./configure --prefix=/usr/local/mysql --with-debug --with-low-memory

Cela n'affecte pas les performances de MySQL, mais comporte un effet secondaire faisant en sorte que vous ne pourrez tuer les clients en état ``sleeping'' sur une connexion avec mysqladmin kill ou mysqladmin shutdown. A la place, le client se terminera lorsqu'il émmetra sa prochaine commande.

Sur quelques versions de AIX, lier avec libbind.a fait vider son noyau à getservbyname (core dump). Il s'agit d'un bogue AIX et doit être remonté à IBM.

Pour AIX 4.2.1 et gcc vous devez apporter les modifications suivantes :

Après la configuration, éditez `config.h' et `include/my_config.h' et changez la ligne qui comporte

#define HAVE_SNPRINTF 1

en

#undef HAVE_SNPRINTF

Et finalement, dans `mysqld.cc' vous devez ajouter un prototype pour initgoups.

#ifdef _AIX41
extern "C" int initgroups(const char *,int);
#endif

Si vous avez besoin d'allouer beaucoup de mémoire au processus mysqld, il ne suffit pas de configurer 'ulimit -d unlimited'. Vous aurez aussi à configurer dans mysqld_safe quelque chose comme :

export LDR_CNTRL='MAXDATA=0x80000000'

Vous trouverez plus d'informations sur l'utilisation d'une grande quantité de mémoire sur : http://publib16.boulder.ibm.com/pseries/en_US/aixprggd/genprogc/lrg_prg_support.htm.

2.6.6.5 Notes relatives à SunOS 4

Avec SunOS 4, les MIT-pthreads sont requis pour compiler MySQL, ce qui signifie que vous aurez besoin de GNU make.

Quelques systèmes SunOS 4 ont des problèmes avec les librairies dynamiques et libtool. Vous pouvez utiliser la ligne suivante de configure pour éviter ce problème :

shell> ./configure --disable-shared --with-mysqld-ldflags=-all-static

Lors de la compilation de readline, vous pouvez obtenir des avertissements à propos de définitions dupliquées. Vous pouvez les ignorer.

Lors de la compilation de mysqld, il y aura quelques avertissements implicit declaration of function. Vous pouvez les ignorer.

2.6.6.6 Notes pour Alpha-DEC-UNIX (Tru64)

Si vous utilisez egcs 1.1.2 sur Digital Unix, vous devez passer à gcc 2.95.2, car egcs connait de sérieux bugs sur DEC!

Lorsque vous compilez des programmes threadés sous Digital Unix, la documentation recommande l'utilisation de l'option -pthread avec cc et cxx et les librairies -lmach -lexc (en plus de -lpthread). Vous devriez exécuter le script configure comme ceci :

CC="cc -pthread" CXX="cxx -pthread -O" \
./configure --with-named-thread-libs="-lpthread -lmach -lexc -lc"

Lorsque vous compilez mysqld, vous pouvez voir apparaître des alertes comme celles-ci :

mysqld.cc: In function void handle_connections()':
mysqld.cc:626: passing long unsigned int *' as argument 3 of
accept(int,sockadddr *, int *)'

Vous pouvez les ignorer tranquillement. Elles apparaissent car configure ne peut détecter que des erreurs, et pas des alertes.

Si vous démarrez le serveur directement en ligne de commande, vous pouvez rencontrer des problèmes d'interruption si vous vous déconnectez. Lorsque vous vous déconnectez, les processus en cours reçoivent le signal SIGHUP. Si c'est le cas, essayez de démarrer le serveur comme ceci :

shell> nohup mysqld [options] &

nohup fait que la commande suivante va ignorer les signaux SIGHUP envoyés par le terminal. Alternativement, vous pouvez démarrer le serveur avec le script safe_mysqld, qui appelle le démon mysqld avec l'option nohup pour vous. See section 4.7.2 safe_mysqld, le script père de mysqld.

SI vous avez des problèmes pour compiler mysys/get_opt.c, vous pouvez simplement supprimer la ligne #define _NO_PROTO au début du fichier!

Si vous utilisez le compilateur cc de Compaq, la ligne de configuration suivante devrait fonctionner :

CC="cc -pthread"
CFLAGS="-O4 -ansi_alias -ansi_args -fast -inline speed all -arch host"
CXX="cxx -pthread"
CXXFLAGS="-O4 -ansi_alias -ansi_args -fast -inline speed all -arch host \
-noexceptions -nortti"
export CC CFLAGS CXX CXXFLAGS
./configure \
--prefix=/usr/local/mysql \
--with-low-memory \
--enable-large-files \
--enable-shared=yes \
--with-named-thread-libs="-lpthread -lmach -lexc -lc"
gnumake

Si vous avez un problème avec libtool, lorsque vous compilez les librairies partagées, ou lorsque vous compilez mysql, vous devriez pouvoir résoudre ce problème avec :

cd mysql
/bin/sh ../libtool --mode=link cxx -pthread  -O3 -DDBUG_OFF \
-O4 -ansi_alias -ansi_args -fast -inline speed \
-speculate all \ -arch host  -DUNDEF_HAVE_GETHOSTBYNAME_R \
-o mysql  mysql.o readline.o sql_string.o completion_hash.o \
../readline/libreadline.a -lcurses \
../libmysql/.libs/libmysqlclient.so  -lm
cd ..
gnumake
gnumake install
scripts/mysql_install_db

2.6.6.7 Notes pour Alpha-DEC-OSF/1

Si vous avez des problèmes de compilation et que le CC de DEC et gcc sont installés, essayez d'utiliser le script configure comme ceci :

CC=cc CFLAGS=-O CXX=gcc CXXFLAGS=-O3 \
./configure --prefix=/usr/local/mysql

Si vous avez des problèmes avec le fichier `c_asm.h', vous pouvez créer un fichier inerte `c_asm.h' avec :

touch include/c_asm.h
CC=gcc CFLAGS=-I./include \
CXX=gcc CXXFLAGS=-O3 \
./configure --prefix=/usr/local/mysql

Notez que les problèmes suivants avec le programme ld peuvent être corrigés en téléchargeant le dernier kit de patch de DEC (Compaq) à : http://ftp.support.compaq.com/public/unix/.

Su OSF/1 V4.0D et avec le compilateur "DEC C V5.6-071 on Digital Unix V4.0 (Rev. 878)" le compilateur présente un comportement étrange (undefined asm symbols). /bin/ld apparaît aussi comme incorrect (problèmes avec des erreurs _exit undefined survenant lors du link de mysqld). Sur ce système, nous avons réussi à compiler MySQL avec le script configure suivant, après avoir remplacé /bin/ld par la version de OSF 4.0C:

CC=gcc CXX=gcc CXXFLAGS=-O3 ./configure --prefix=/usr/local/mysql

Avec le compilateur Digital "C++ V6.1-029", la ligne suivante doit fonctionner :

CC=cc -pthread
CFLAGS=-O4 -ansi_alias -ansi_args -fast -inline speed -speculate all \
       -arch host
CXX=cxx -pthread
CXXFLAGS=-O4 -ansi_alias -ansi_args -fast -inline speed -speculate all \
          -arch host -noexceptions -nortti
export CC CFLAGS CXX CXXFLAGS
./configure --prefix=/usr/mysql/mysql --with-mysqld-ldflags=-all-static \
            --disable-shared --with-named-thread-libs="-lmach -lexc -lc"

Avec certaines versions de OSF/1, la fonction alloca() est buguée. Corrigez cela en supprimant la ligne du fichier `config.h' qui définit 'HAVE_ALLOCA'.

La fonction alloca() a aussi un prototype incorrect dans /usr/include/alloca.h. L'alerte en résultant peut être ignorée.

Le script configure va utiliser automatiquement les librairies de threads suivantes : --with-named-thread-libs="-lpthread -lmach -lexc -lc".

En utilisant gcc, vous pouvez aussi essayer le script configure avec ceci :

shell> CFLAGS=-D_PTHREAD_USE_D4 CXX=gcc CXXFLAGS=-O3 ./configure ...

Si vous avez des problèmes avec les signaux (MySQL s'arrête inopinément sous forte charge), vous pouvez avoir rencontré un bogue de l'OS avec les threads, et les signaux. Dans ce cas, vous pouvez indiquer à MySQL de ne pas utiliser les signaux avec la configuration suivante :

shell> CFLAGS=-DDONT_USE_THR_ALARM \
       CXXFLAGS=-DDONT_USE_THR_ALARM \
       ./configure ...

Cela ne modifie pas les performances de MySQL, mais vous ne pourrez plus terminer les clients qui sont en mode ``sleeping'' sur une connexion avec la commande mysqladmin kill ou mysqladmin shutdown. Au lieu de cela, le client sera interrompu lorsqu'il émettra la prochaine commande.

Avec gcc 2.95.2, vous aurez probablement les problèmes de compilation suivants :

sql_acl.cc:1456: Internal compiler error in `scan_region', at except.c:2566
Please submit a full bug report.

Pour corriger cela, vous devez aller dans le dossier sql et faire un ``copier coller'' de la dernière ligne gcc, tout en remplaçant le code -O3 par le code -O0 ou ajouter le code -O0 immédiatement après gcc si vous n'avez aucune option -O sur votre ligne de compilation). Après cela, vous pouvez retourner au niveau de la racine de MySQL, et tenter à nouveau un make.

2.6.6.8 Notes relatives à SGI Irix

Si vous utilisez la version 6.5.3 d'Irix ou plus récente, mysqld ne pourra créer de threads que si vous l'exécutez en tant qu'utilisateur possédant le privilège CAP_SCHED_MGT (comme root) ou que vous donnez au serveur mysqld ce privilège avec la commande suivante :

shell> chcap "CAP_SCHED_MGT+epi" /opt/mysql/libexec/mysqld

Vous devrez peut-être supprimer quelques définitions dans `config.h' après avoir exécuté configure et avant de compiler.

Sur quelques implémentations d'Irix, la fonction alloca() ne marche pas. Si le serveur mysqld se stoppe sur quelques requêtes SELECT, supprimez les lignes de `config.h' qui définissent HAVE_ALLOC et HAVE_ALLOCA_H. Si mysqladmin create ne fonctionne pas, supprimez la ligne qui définit HAVE_READDIR_R dans `config.h'. Vous devrez peut-être supprimer la ligne de HAVE_TERM_H aussi.

SGI recommande que vous installiez tous les patches de cette page : http://support.sgi.com/surfzone/patches/patchset/6.2_indigo.rps.html

Vous devrez, au moins, installer la dernière version du noyau, de rld et de libc.

Vous avez besoin de tous les patches POSIX sur cette page, pour le support des pthreads :

http://support.sgi.com/surfzone/patches/patchset/6.2_posix.rps.html

Si vous obtenez une erreur se rapprochant de la suivante lors de la compilation de `mysql.cc':

"/usr/include/curses.h", line 82: error(1084): invalid combination of type

Tapez ce qui suit dans le répertoire racine de votre source MySQL :

shell> extra/replace bool curses_bool < /usr/include/curses.h \
> include/curses.h
shell> make

Un problème de planification a aussi été signalé. Si seul un thread est en cours, les choses ralentissent. Evitez cela en démarrant un autre client. Cela pourra accélérer l'exécution de l'autre thread de 2 à 10 fois. Ceci est un problème pas encore très clair avec les threads Irix; vous devrez improviser pour trouver des solutions en attendant que cela soit corrigé.

Si vous compilez avec gcc, vous pouvez utiliser la commande configure suivante :

CC=gcc CXX=gcc CXXFLAGS=-O3 \
./configure --prefix=/usr/local/mysql --enable-thread-safe-client \
--with-named-thread-libs=-lpthread

Sous Irix 6.5.11 avec les compilateurs natifs Irix C et C++ versions 7.3.1.2, ce qui suit est connu pour fonctionner :

CC=cc CXX=CC CFLAGS='-O3 -n32 -TARG:platform=IP22 -I/usr/local/include \
-L/usr/local/lib' CXXFLAGS='-O3 -n32 -TARG:platform=IP22 \
-I/usr/local/include -L/usr/local/lib' ./configure \
--prefix=/usr/local/mysql --with-innodb --with-berkeley-db \
--with-libwrap=/usr/local \
--with-named-curses-libs=/usr/local/lib/libncurses.a

2.6.6.9 Notes pour Caldera (SCO)

Le port courant a été testé avec les systèmes ``sco3.2v5.0.4'' et ``sco3.2v5.0.5''. Il y a eu aussi beaucoup de progrès sur le port de ``sco 3.2v4.2''.

Pour le moment, le compilateur recommandé sur OpenServer est gcc 2.95.2. Avec lui, vous devriez pouvoir compiler MySQL simplement avec :

CC=gcc CXX=gcc ./configure ... (options)
  1. Pour OpenServer 5.0.X, vous devez utiliser gcc-2.95.2p1 ou plus récent, de Skunkware. http://www.caldera.com/skunkware/ et choisissez le visualiseur de packages OpenServer ou via FTP à ftp://ftp2.caldera.com/pub/skunkware/osr5/devtools/gcc.
  2. Vous avez besoin du port GCC 2.5.x pour ce produit, et du système de développement. Ils sont nécessaires sur cette version de Caldera (SCO) Unix. Vous ne pouvez pas juste utiliser le système gcc dev.
  3. Vous devez obtenir le package FSU Pthreads et l'installer en premier. Il est disponible à http://www.cs.wustl.edu/~schmidt/ACE_wrappers/FSU-threads.tar.gz. Vous pouvez aussi obtenir un package précompilé à http://www.mysql.com/Downloads/SCO/FSU-threads-3.5c.tar.gz.
  4. FSU Pthreads peut être compilé sur Caldera (SCO) Unix 4.2 avec tcpip. Ou OpenServer 3.0 ou Open Desktop 3.0 (OS 3.0 ODT 3.0), avec le Caldera (SCO) Development System installé, utilisant le bon port de GCC 2.5.x ODT ou OS 3.0, vous aurez besoin du bon port de GCC 2.5.x Il y a beaucoup de problèmes sans un bon port. Le port de ce produit requiert le système SCO Unix Development. Sans cela, vous manquerez des librairies et des linkeurs nécessaires.
  5. Pour compiler FSU Pthreads sur votre système, faites ceci :
    1. Exécutez ./configure dans le dossier `threads/src' et sélectionnez l'option SCO OpenServer. Cette commande copie `Makefile.SCO5' dans `Makefile'.
    2. Exécutez make.
    3. Pour faire l'installation dans le dossier par défaut `/usr/include', connectez vous en root, puis utilisez cd vers le dossier `thread/src', et exécutez la commande make install.
  6. N'oubliez pas d'utiliser GNU make pour compiler MySQL.
  7. Si vous ne démmarez pas safe_mysqld en tant que root, vous aurez probablement la limite de 110 fichiers ouverts par processus. mysqld va écrire une note à ce propos de le fichier de log.
  8. Avec SCO 3.2V5.0.5, vous devez utiliser FSU Pthreads version 3.5c ou plus récent. Vous devez aussi utiliser gcc 2.95.2 ou plus récent! La commande configure suivante doit fonctionner :
    shell> ./configure --prefix=/usr/local/mysql --disable-shared
    
  9. Avec SCO 3.2V4.2, vous devez utiliser FSU Pthreads version 3.5c ou plus récent. La commande configure suivante doit fonctionner :
    shell> CFLAGS="-D_XOPEN_XPG4" CXX=gcc CXXFLAGS="-D_XOPEN_XPG4" \
           ./configure \
               --prefix=/usr/local/mysql \
               --with-named-thread-libs="-lgthreads -lsocket -lgen -lgthreads" \
               --with-named-curses-libs="-lcurses"
    
    Vous pouvez avoir des problèmes avec certains fichiers d'inclusion. Dans ce cas, vous pouvez trouver un nouveau fichier d'inclus spécifique à SCO à http://www.mysql.com/Downloads/SCO/SCO-3.2v4.2-includes.tar.gz. Vous devrez décompresser de fichier dans le dossier `include' de votre dossier source MySQL.

Notes de développement Caldera (SCO):

Si vous voulez installer DBI sur Caldera (SCO), vous devez éditer le fichier `Makefile' dans DBI-xxx et chaque sous-dossier.

Notez que les lignes suivantes présupposent que gcc 2.95.2 ou plus récent est installé :

Ancien :                                  Nouveau :
CC = cc                               CC = gcc
CCCDLFLAGS = -KPIC -W1,-Bexport       CCCDLFLAGS = -fpic
CCDLFLAGS = -wl,-Bexport              CCDLFLAGS =

LD = ld                               LD = gcc -G -fpic
LDDLFLAGS = -G -L/usr/local/lib       LDDLFLAGS = -L/usr/local/lib
LDFLAGS = -belf -L/usr/local/lib      LDFLAGS = -L/usr/local/lib

LD = ld                               LD = gcc -G -fpic
OPTIMISE = -Od                        OPTIMISE = -O1

Ancien :
CCCFLAGS = -belf -dy -w0 -U M_XENIX -DPERL_SCO5 -I/usr/local/include

Nouveau :
CCFLAGS = -U M_XENIX -DPERL_SCO5 -I/usr/local/include

Ceci est dû au fait que le Perl dynaloader ne va pas charger les modules DBI si ils ont été compilés avec icc ou cc.

Perl fonctionne au mieux avec cc.

2.6.6.10 Notes relatives à la version 7.0 fr Caldera (SCO) Unixware

Vous devez utiliser une version de MySQL supérieure ou égale à la 3.22.13 car cette version corrige quelques problèmes de port vers Unixware.

Nous avons réussi à compiler MySQL avec la ligne suivante de configure sur la version 7.0.1 de Unixware :

CC=cc CXX=CC ./configure --prefix=/usr/local/mysql

Si vous voulez utiliser gcc, vous devez utiliser la version 2.95.2 de gcc ou plus récente.

Caldera fournit libsocket.so.2 disponible sur ftp://stage.caldera.com/pub/security/tools pour des corrections de sécurité pre-OSR506. Le correctif de telnetd est aussi disponible sur ftp://stage.caldera.com/pub/security/openserver/CSSA-2001-SCO.10/ comme libsocket.so.2 et libresolv.so.1 avec des instructions pour installer sur les systèmes pre-OSR506.

Il est bon d'installer les patches précédents avant d'essayer de compiler/utiliser MySQL.

2.6.7 Notes relatives à OS/2

MySQL utilise un certain nombre de fichiers ouverts. A cause de cela, vous devez ajouter un ligne se rapprochant de la suivante dans votre fichier `CONFIG.SYS' :

SET EMXOPT=-c -n -h1024

Si vous ne le faites pas, vous obtiendrez probablement l'erreur :

File 'xxxx' not found (Errcode: 24)

Lors de l'utilisation de MySQL avec OS/2 Warp 3, FixPack 29 ou plus est requis. Avec OS/2 Warp 4, FixPack 4 ou plus est requis. C'est un besoin de la librairie des Pthreads. MySQL doit être installé sur une partition qui supporte les noms de fichiers longs, tel que HPFS, FAT32, etc.

Le script `INSTALL.CMD' doit être exécuté à partir du `CMD.EXE' d'OS/2 et ne fonctionnera probablement pas avec des substitus tel que `4OS2.EXE'.

Le script `scripts/mysql-install-db' a été renommé. Il est maintenant nommé `install.cmd' et est un script REXX, qui mettra en place les configurations de sécurité par défaut de MySQL et créera les icônes WorkPlace Shell pour MySQL.

Le support des module dynamiques est compilé, mais n'est pas assez testé. Les modules dynamiques doivent être compilés en utilisant la librairie run-time Pthreads.

gcc -Zdll -Zmt -Zcrtdll=pthrdrtl -I../include -I../regex -I.. \
    -o exemple udf_exemple.cc -L../lib -lmysqlclient udf_exemple.def
mv exemple.dll exemple.udf

Note : A cause des limitations de OS/2, les noms des modules UDF ne doivent pas dépasser 8 caractères. Les modules sont stockés dans le répertoire `/mysql2/udf'; le script safe-mysqld.cmd placera ce répertoire dans la variable d'environnement BEGINLIBPATH. Lors de l'utilisation des modules UDF, les extensions spécifiées sont ignorées. Elle est supposée être `.udf'. Par exemple, sous Unix, le module partagé peut se nommer `exemple.so' et vous chargeriez une de ses fonctions de la façon suivante :

mysql> CREATE FUNCTION metaphon RETURNS STRING SONAME "exemple.so";

Sous OS/2, me module s'appelera `exemple.udf', mais vous n'aurez pas à spécifier son extension :

mysql> CREATE FUNCTION metaphon RETURNS STRING SONAME "exemple";

2.6.8 Notes relatives à BeOS

Nous sommes vraiment intéressés par le port de MySQL sur BeOS, mais malheureusement, nous n'avons personne qui s'y connaisse en BeOS ou qui ait le temps de s'en occuper.

Nous sommes intéressés par quelqu'un qui serait prêt à faire le port, et nous l'aiderions pour toutes les questions techniques qu'il pourrait se poser durant le processus.

Nous avons déjà eu des contacts avec des développeurs BeOS qui ont dit que MySQL était porté à 80% sur BeOS, mais nous n'avons plus entendu parler d'eux depuis.

2.6.9 Notes relatives à Novell NetWare

Nous sommes vraiment intéressés par le port de MySQL sur NetWare, mais malheureusement, nous n'avons personne qui s'y connaisse en NetWare ou qui ait le temps de s'en occuper.

Nous sommes intéressés par quelqu'un qui serait prêt à faire le port, et nous l'aiderions pour toutes les questions techniques qu'il pourrait se poser durant le processus.

2.7 Commentaires sur l'installation de Perl

2.7.1 Installer Perl sur Unix

Le support Perl pour MySQL est fournit par les interfaces clientes DBI/DBD. See section 8.2 API Perl pour MySQL. Le code client des modules DBD/DBI de Perl, requière une version de celui-ci supérieure ou égale à la version 5.004. L'interface ne fonctionnera pas si vous avez une ancienne version de Perl.

Le support Perl de MySQL requière aussi que vous ayez installé le support de programmation de clients pour MySQL. Si vous avez installé MySQL à partir de fichiers RPM, les programmes clients sont dans le RPM client, mais le support de la programmation de clients est dans le RPM des développeurs. Assurez-vous d'avoir installé le dernier RPM.

Depuis la version 3.22.8, le support Perl est distribué séparément du reste de la distribution MySQL. Si vous voulez installer le support Perl, les fichiers dont vous aurez besoin peuvent être trouvés sur http://www.mysql.com/downloads/api-dbi.html.

Les distributions de Perl sont fournies en tant qu'archives compréssées tar et ont des noms comme `MODULE-VERSION.tar.gz', où MODULE est le nom du module et VERSION est le numéro de version. Vous devez obtenir les distributions Data-Dumper, DBI, et Msql-Mysql-modules et les installer dans cet ordre. La procédure d'installation est décrite ici. L'exemple montré ici concerne le module Data-Dumper, mais la procédure est la même pour les trois distributions :

  1. Décompressez la distribution dans le dossier courant :
    shell> gunzip < Data-Dumper-VERSION.tar.gz | tar xvf -
    
    Cette commande crée un dossier appelé `Data-Dumper-VERSION'.
  2. Mettez vous dans le répertoire racine de la distribution décompressée :
    shell> cd Data-Dumper-VERSION
    
  3. Construisez la distribution et compilez tout :
    shell> perl Makefile.PL
    shell> make
    shell> make test
    shell> make install
    

La commande make test est importante car elle vérifie que le module fonctionne. Notez que quand vous exécutez cette commande durant l'installation de Msql-Mysql-modules pour tester le code de l'interface, le serveur MySQL doit être en marche sinon le test échouera.

Il est bon de reconstruire et réinstaller la distribution Msql-Mysql-modules à chaque fois que vous réinstallez une nouvelle version de MySQL, particulièrement si vous avez des problèmes avec vos scripts DBI après avoir avoir mis à jour MySQL.

Si vous n'avez pas le droit d'installer des modules Perl dans le dossier système ou que vous voulez installer des modules locaux de Perl, la référence suivante pourra vous aider :

http://www.iserver.com/support/contrib/perl5/modules.html

Regardez le paragraphe Installing New Modules that Require Locally Installed Modules.

2.7.2 Installer ActiveState Perl sur Windows

Pour installer le module DBD MySQL avec ActiveState Perl sous Windows, vous devez faire ce qui suit :

Ce qui suit devrait fonctionner avec la version 5.6 d'ActiveState Perl.

Si ce qui précède ne veut pas fonctionner, vous devez à la place installer le pilote MyODBC et vous connecter au serveur MySQL via ODBC :

use DBI;
$dbh= DBI->connect("DBI:ODBC:$dsn","$utilisateur","$motdepasse") ||
  die "Obtenu l'erreur $DBI::errstr lors de la connexion à $dsn\n";

2.7.3 Installer la distribution Perl de MySQL sous Windows

Cette distribution Perl de MySQL contient DBI, DBD:MySQL et DBD:ODBC.

2.7.4 Problèmes lors de l'utilisation des interfaces Perl DBI et DBD

Si Perl vous informe qu'il ne peut trouver le module `../mysql/mysql.so', il se trouve probablement que Perl n'arrive pas à trouver la librairie partagée `libmysqlclient.so'.

Vous pouvez corriger cela en suivant l'une des méthodes suivantes :

Si vous obtenez l'erreur suivante de DBD-mysql, vous utilisez probablement gcc (ou un vieux binaire compilé avec gcc) :

/usr/bin/perl: can't resolve symbol '__moddi3'
/usr/bin/perl: can't resolve symbol '__divdi3'

Ajoutez -L/usr/lib/gcc-lib/... -lgcc à la commande de liaison lorsque la librairie `mysql.so' est construite (vérifiez l'affichage de make concernant `mysql.so' quand vous compilez le client Perl). L'option -L doit spécifier le chemin vers le dossier où se situe `libgcc.a' sur votre système.

Une autre cause du problème peut être que Perl et MySQL ne sont pas tous deux compilés avec gcc. Dans ce cas là, vous devrez faire en sorte qu'ils le soient.

Si vous obtenez les erreurs suivantes de la part de Msql-Mysql-modules quand vous exécutez ces tests :

t/00base............install_driver(mysql) failed:
Can't load '../blib/arch/auto/DBD/mysql/mysql.so' for module DBD::mysql:
../blib/arch/auto/DBD/mysql/mysql.so: undefined symbol:
uncompress at /usr/lib/perl5/5.00503/i586-linux/DynaLoader.pm line 169.

cela signifie que vous avez besoin d'inclure la librairie dynamique, -lz, dans la ligne de liaison. Cela peut se faire en changeant ce qui suit dans `lib/DBD/mysql/Install.pm' :

$sysliblist .= " -lm";

en

$sysliblist .= " -lm -lz";

Après cela, vous devez exécuter 'make realclean' et reprendre l'installation dès le début.

Si vous voulez utiliser le module de Perl sur un système qui ne supporte pas les liaisons dynamiques (comme Caldera/SCO) vous pouvez générer une version statique de Perl incluant DBI et DBD-mysql. L'approche est de générer une version de Perl avec le code de DBI lié et de l'installer au dessus de votre Perl courant. Puis vous utilisez cette version pour en créer à nouveau une autre qui comporte le code de DBD lié et d'installer cette version ci.

Sur Caldera (SCO), vous devez définir les variables d'environnement suivantes :

shell> LD_LIBRARY_PATH=/lib:/usr/lib:/usr/local/lib:/usr/progressive/lib
ou
shell> LD_LIBRARY_PATH=/usr/lib:/lib:/usr/local/lib:/usr/ccs/lib:\
/usr/progressive/lib:/usr/skunk/lib
shell> LIBPATH=/usr/lib:/lib:/usr/local/lib:/usr/ccs/lib:\
/usr/progressive/lib:/usr/skunk/lib
shell> MANPATH=scohelp:/usr/man:/usr/local1/man:/usr/local/man:\
/usr/skunk/man:

D'abord, créez un Perl incluant un DBI lié statiquement en exécutant des commandes dans le dossier où se situe votre distribution DBI :

shell> perl Makefile.PL -static -config
shell> make
shell> make install
shell> make perl

Ensuite, vous devez installer le nouveau Perl. Les affichages de make perl vous indiqueront les commandes make exactes que vous aurez besoin d'exécuter pour faire l'installation. Sur Caldera (SCO), il s'agit de make -f Makefile.aperl inst_perl MAP_TARGET=perl.

Puis, utilisé le Perl qui vient d'être créé pour en créer un nouveau qui inclut un DBD::mysql lié statiquement en exécutant ces commandes dans le dossier où votre distribution de Msql-Mysql-modules se situe :

shell> perl Makefile.PL -static -config
shell> make
shell> make install
shell> make perl

Finalement, vous devez installer ce nouveau Perl. Une fois de plus, l'affichage de make perl vous indiquera la commande à utiliser.


Go to the first, previous, next, last section, table of contents.