Ce chapitre décrit comment obtenir et installer MySQL :
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 :
MySQL-VERSION.i386.rpm
Le serveur MySQL. Vous en aurez besoin à moins que vous ne vouliez que vous
connecter à un serveur MySQL tournant sur une autre machine.
MySQL-client-VERSION.i386.rpm
Les programmes clients MySQL standards. Vous avez certainement besoin d'installer
ce paquet.
MySQL-bench-VERSION.i386.rpm
Tests et bancs d'essai. Nécessite Perl et les modules RPM msql-mysql-modules.
MySQL-devel-VERSION.i386.rpm
Librairies et fichiers d'inclusions dont vous aurez besoin pour compiler d'autres
clients MySQL, tels que les modules Perl.
MySQL-VERSION.src.rpm
Celui-ci contient le code source de tous les paquets précédents. Il peut donc être
utilisé pour construire des fichiers RPM pour d'autres architectures (par exemple, l'Alpha
ou le SPARC).
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.
Le serveur MySQL pour Windows est disponible sous deux formes :
En règle générale, vous devriez utiliser la distribution binaire.
Vous aurez besoin des choses suivantes :
MAX_ROWS et
AVG_ROW_LENGTH quand vous créez les tables. See section 6.5.3 Syntaxe de CREATE TABLE.
ZIP pour décompresser le fichier de la distribution.
ODBC, vous
aurez aussi besoin du pilote MyODBC. See section 8.3 Support ODBC avec MySQL.
C:\> NET STOP MySQLDans les autres cas, utilisez :
C:\mysql\bin> mysqladmin -u root shutdown
C:\mysql\bin> mysqld-max-nt --remove
Parcourir pour spécifier un emplacement.
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.
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.
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'.
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/.
SERVER: mysql -u root shutdown
SERVER: SEARCH ADD SYS:MYSQL\BIN
mysql_install_db en ligne de commande.
mysqld_safe
dans la console.
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.
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.
MD5 ou GnuPGUne 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.
MD5 ChecksumUne 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.
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.
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 :
glibc 2.0.7+. See section 2.6.1 Notes relatives à Linux (toutes versions).
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 :
pthread_mutex_lock() est trop soucieux du temps CPU, cela va ralentir
sérieusement MySQL. Si ce problème n'est pas réglé, ajouter des processeurs
supplémentaires va finalement ralentir MySQL.
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.
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 :
MySQL peuvent se connecter aux deux versions.
La distribution binaire avancée est marquée du suffixe -max et est
configurée avec les mêmes options que mysqld-max.
See section 4.7.5 mysqld-max, la version étendue du serveur mysqld.
Si vous souhaitez utiliser des fichiers RPM de MySQL-Max, vous devez tout d'abord installer
les RPM MySQL standards.
mysqld avec certaines options supplémentaires qui ne
sont pas présentes dans les distributions binaires standards. Ci-dessous, une liste
des options les plus courantes que vous pourriez vouloir utiliser :
--with-innodb
--with-berkeley-db
--with-raid
--with-libwrap
--with-named-z-lib (Ceci est appliqué à certains binaires)
--with-debug[=full]
pgcc), ou utiliser des options de compilations davantage
optimisées pour votre processeur.
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 :
3) décrit le format de fichier. Toutes les versions 3 ont
le même format de fichier.
21) correspond au niveau de version. Normalement, il y a le
choix entre deux d'entre eux. L'un correspond à la version/branche stable
(actuellement 23) et l'autre se réfère à la branche de
développement (actuellement 4.0). Normalement, les deux versions sont
stables, mais la version de développement peut comporter des lacunes, manquer de
documentation sur des nouvelles fonctionnalités, ou peut ne pas compiler sur certains
systèmes.
17) est le numéro de version au sein du niveau de
version. Celui-ci est incrémenté à chaque nouvelle publication. En
temps normal, vous souhaiterez utiliser la dernière version du niveau de version que
vous avez choisi.
beta) indique le niveau de stabilité de la version. Les suffixes
possibles sont :
alpha indique que la publication contient de grandes portions de nouveau code qui n'a
pas été testé à 100%. Les bogues connus (d'ordinaire, il n'y en a
aucun) doivent être documentés dans la section News. See section C Historique des changements MySQL. Il existe
aussi de nouvelles commandes et extensions dans la plupart des versions alpha. Du
développement actif qui inclut des changements majeurs dans le code peut concerner
les versions alpha, mais tout sera testé avant de faire une publication. Il ne devrait
pas y avoir de bogues connus dans les publications de MySQL.
beta signifie que tout le nouveau code a été testé. Aucune
fonctionnalité majeure qui pourrait causer corruption du code n'est ajoutée.
Il ne doit pas y avoir un seul bogue connu. Une version alpha passe en beta quand il n'y a
pas eu de bogue fatal rapporté depuis au moins un mois et que nous ne
prévoyons pas de nouvelle fonctionnalité qui pourrait corrompre d'anciennes
commandes.
gamma est une version bêta qui existe depuis un certain temps et qui semble
fonctionner correctement. Seulement des changements mineurs sont effectués. C'est ce
que de nombreuses autres compagnies appellent une publication.
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 :
crash-me
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.
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 :
mysqld est installé dans le répertoire `libexec' plutôt que
dans le répertoire `bin'.
mysql_install_db est installé dans le répertoire `/usr/local/bin' plutôt
que dans `/usr/local/mysql/scripts'.
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'.
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 ?.
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 :
'a' pour la plate-forme. Grâce à notre large
communauté d'utilisateurs, les problèmes sont trouvés rapidement.
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 :
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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.
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
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
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
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.
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
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
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
gcc 2.8.1
CC=gcc CXX=gcc CXXFLAGS=-O3 ./configure --prefix=/usr/local/mysql --with-low-memory --with-extra-charsets=complex
gcc 2.7.2.1
CC=gcc CXX=gcc CXXFLAGS=-O ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex
gcc 2.7.2
CC=gcc CXX=gcc CXXFLAGS=-O3 ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex
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.
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 :
gunzip pour décompresser la distribution.
tar pour désarchiver la distribution. GNU tar est connu
pour fonctionner. Le tar de Sun connaît quelques problèmes.
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 :
root.)
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).
-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.
mysqld fonctionnera :
shell> groupadd mysql shell> useradd -g mysql mysqlCes 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.
shell> cd /usr/local
shell> gunzip < /chemin/de/mysql-VERSION-OS.tar.gz | tar xvf - shell> ln -s chemin-complet-de-mysql-VERSION-OS mysqlLa 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'.
shell> cd mysqlVous y trouverez de nombreux fichiers et sous-répertoires. Les plus importants lors de l'installation sont les sous-répertoires `bin' et `scripts'.
PATH de telle façon que votre interpréteur de
commandes trouve les programmes facilement. See section E Variables d'environnement.
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.
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 executableChangez 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.
shell> scripts/mysql_install_dbVeuillez 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.
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/mysqlLa 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.
DBI/DBD,
référez-vous à section 2.7 Commentaires sur l'installation de Perl.
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.
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 :
gunzip pour décompresser la distribution.
tar pour désarchiver la distribution. GNU tar est connu
pour fonctionner. Le tar de Sun connaît quelques problèmes.
gcc >= 2.95.2, egcs >= 1.0.2
ou egcs 2.91.66, SGI C++, et SunPro C++ sont quelques-uns des compilateurs
réputés pour fonctionner. libg++ n'est pas nécessaire si vous
utilisez gcc. gcc 2.7.x souffre d'un bogue qui l'empêche de compiler
quelques fichiers C++ correctement écrits, tels que `sql/sql_base.cc'. Si vous
disposez seulement de gcc 2.7.x, vous devez mettre à jour votre gcc
afin de compiler MySQL. gcc 2.8.1 est aussi reconnu pour rencontrer des
problèmes sur certaines plate-formes, il devrait donc être désactivé
si un autre compilateur existe pour la plate-forme.
gcc >= 2.95.2 est recommandé pour compiler MySQL dans ses versions 3.23.x.
make. GNU make est une fois de plus recommandé et est
quelquefois requis. Si vous rencontrez des problèmes, nous vous recommandons
d'essayer GNU make 3.75 ou supérieur.
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.
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 :
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.
mysqld fonctionnera :
shell> groupadd mysql shell> useradd -g mysql mysqlCes 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.
shell> gunzip < /path/to/mysql-VERSION.tar.gz | tar xvf -Cette commande crée un répertoire nommé `mysql-VERSION'.
shell> cd mysql-VERSIONNotez 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.
shell> ./configure --prefix=/usr/local/mysql shell> makeQuand 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.
shell> make installVous aurez certainement besoin de lancer cette commande en tant que
root.
shell> scripts/mysql_install_dbVeuillez 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!
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/mysqlLa 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.
DBI/DBD,
référez-vous à section 2.7 Commentaires sur l'installation de Perl.
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.
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.
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 :
--without-server :
shell> ./configure --without-serverSi vous n'avez pas de compilateur C++,
mysql ne compilera
pas (c'est le programme client qui requière C++). Dans ce
cas, vous pouvez supprimer la partie de code dans configure
qui vérifie l'existence d'un compilateur C++, puis
exécuter ./configure avec l'option
--without-server. La compilation essaiera encore de construire
mysql, mais vous pouvez ignorer les messages d'erreurs
concernant `mysql.cc'. (Si make stoppe, essayez
make -k pour dire de continuer même si on
rencontre des erreurs.)
libmysqld.a) vous devez utiliser l'option
--with-embedded-server.
configure se rapprochant de l'une
des commandes suivantes :
shell> ./configure --prefix=/usr/local/mysql
shell> ./configure --prefix=/usr/local \
--localstatedir=/usr/local/mysql/data
La première change le préfixe de l'installation
pour que tout soit installé dans `/usr/local/mysql'
au lieu de `/usr/local' par défaut. La seconde commande
préserve le préfixe d'installation par défaut
mais change le répertoire par défaut pour les bases
de données (normalement `/usr/local/var') en
/usr/local/mysql/data.
Après que vous ayez compilé MySQL, vous pouvez changer
ces options dans les fichiers d'options. See section 4.1.2 Fichier d'options `my.cnf'.
configure comme celle-ci :
shell> ./configure --with-unix-socket-path=/usr/local/mysql/tmp/mysql.sockNotez que le fichier donné doit avoir un chemin absolu ! Vous pourrez aussi changer le chemin vers `mysql.sock' plus tard en utilisant les fichiers d'options de MySQL. See section A.4.5 Comment protéger ou changer le fichier socket `/tmp/mysql.sock'.
configure de la manière suivante :
shell> ./configure --with-client-ldflags=-all-static \
--with-mysqld-ldflags=-all-static
gcc et n'avez pas libg++ ou libstdc++
d'installés, vous pouvez dire à configure d'utiliser gcc
en tant que compilateur C++ :
shell> CC=gcc CXX=gcc ./configureQuand vous utilisez
gcc en tant que compilateur C++, aucune
tentative de liaison avec libg++ ou libstdc++ ne sera
effectuée. Il peut être bon d'utiliser cette méthode même si vous
avez les librairies citées, car quelques versions de celles-ci ont
causé des problèmes à des utilisateurs MySQL par le passé.
Voici quelques variables d'environnement à définir selon le compilateur
que vous utilisez :
| Compilateur | Options recommandées |
| gcc 2.7.2.1 | CC=gcc CXX=gcc CXXFLAGS="-O3 -felide-constructors" |
| egcs 1.0.3a | CC=gcc CXX=gcc CXXFLAGS="-O3 -felide-constructors -fno-exceptions -fno-rtti" |
| gcc 2.95.2 | CFLAGS="-O3 -mpentiumpro" CXX=gcc CXXFLAGS="-O3 -mpentiumpro \ -felide-constructors -fno-exceptions -fno-rtti" |
| pgcc 2.90.29 ou plus récent | CFLAGS="-O3 -mpentiumpro -mstack-align-double" CXX=gcc \ CXXFLAGS="-O3 -mpentiumpro -mstack-align-double -felide-constructors \ -fno-exceptions -fno-rtti" |
--prefix=/usr/local/mysql --enable-assembler \ --with-mysqld-ldflags=-all-staticEn d'autres termes, la ligne de configuration ressemble à ce qui suit pour les versions récentes de gcc :
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-staticLes binaires que nous fournissons sur le site de MySQL à http://www.mysql.com/ sont tous compilés avec une optimisation totale et devraient être parfaits pour la plupart des utilisateurs. See section 2.2.10 Binaires compilés par MySQL AB. Il y a quelques choses que vous pouvez modifier pour rendre le binaire encore plus rapide, mais cela est réservé aux utilisateurs avancés. See section 5.5.3 Influences de la compilation et des liaisons sur la vitesse de MySQL. Si la génération échoue et produit des erreurs disant que votre compilateur ou outil de liaison n'est pas capable de créer la librairie partagée `libmysqlclient.so.#' (`#' étant un numéro de version), vous pouvez contourner ce problème en donnant l'option
--disable-shared à configure. Dans ce cas,
configure ne générera pas de librairie partagée
`libmysqlclient.so.#'.
DEFAULT pour les colonnes non-NULL (c'est à dire, les
colonnes qui ne peuvent être NULL). Cela fait générer des erreurs
aux requêtes INSERT si vous ne spécifiez pas explicitement une valeur
pour toutes les colonnes non-NULL. Pour supprimer l'utilisation des
valeurs par défaut, exécutez configure de cette façon :
shell> CXXFLAGS=-DDONT_USE_DEFAULT_FIELDS ./configure
--with-charset :
shell> ./configure --with-charset=CHARSET
CHARSET peut être l'un des big5, cp1251, cp1257,
czech, danish, dec8, dos, euc_kr,
gb2312, gbk, german1, hebrew, hp8,
hungarian, koi8_ru, koi8_ukr, latin1,
latin2, sjis, swe7, tis620, ujis,
usa7, ou win1251ukr.
See section 4.6.1 Le jeu de caractères utilisé pour les données et le stockage.
Si vous voulez convertir les caractères entre le serveur et le client,
regardez du côté de la commande SET CHARACTER SET.
See section 5.5.6 Syntaxe de SET.
Attention : Si vous changez les jeux de caractères après
avoir crée des tables, vous devrez exécuter
myisamchk -r -q --set-character-set=charset sur chaque table.
Vous index pourraient être stockés de manière incorrecte sinon.
(Cela peut survenir si vous installez MySQL, créez quelques tables,
puis reconfigurez MySQL pour qu'il utilise un jeu de caractères différent
et le réinstallez.)
Avec l'option --with-extra-charsets=LIST vous pouvez définir
les jeux de caractères additionnels à compiler dans le serveur.
Ici LIST est soit une liste de jeux de caractères séparés par
des espaces, soit complex pour inclure tous les jeux de caractères
ne pouvant être chargés dynamiquement, ou encore all pour inclure
tous les jeux de caractères dans les binaires.
--with-debug :
shell> ./configure --with-debugCela alloue un vérificateur d'allocation de mémoire qui peut trouver quelques erreurs et qui fournit des informations sur ce qui se produit. See section D.1 Déboguer un serveur MySQL.
--enable-thread-safe-client. Cela créera
une librairie libmysqlclient_r avec laquelle vous devez lier vos
applications threadées. See section 8.4.14 Comment faire un client MySQL threadé.
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 :
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.
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.23Pour dupliquer la branche 4.0, utilisez cette commande :
shell> bk clone bk://work.mysql.com:7001 mysql-4.0Pour dupliquer la branche 4.1, utilisez cette commande :
shell> bk clone bk://work.mysql.com:7004 mysql-4.1Dans 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.
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> makeSi 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.
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.
make test. See section 9.1.2 Suite de test de MySQL.
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.
bk clone pour obtenir l'arbre
source, vous devez lancer régulièrement bk pull pour obtenir les mises
à jour.
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.
BitKeeper dispose d'une aide agréable à laquelle vous pouvez
accéder via bk helptool.
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.
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 :
configure est exécuté après une première exécution, il peut utiliser
des informations qui ont été rassemblées durant une première invocation. Ces
informations sont stockées dans le fichier `config.cache'. Lorsque configure
est lancé, il commence par regarder dans ce fichier, et lire le contenu qui existe,
en supposant que ces données sont toujours correctes. Cette supposition est
invalide si vous faîtes une reconfiguration.
configure, vous devez exécuter à nouveau make
pour recompiler. Toutefois, vous devrez peut être supprimer les vieux fichiers d'objets
qui ont été compilé en utilisant différentes configurations précédentes.
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 :
Internal compiler error: program cc1plus got fatal signal 11 ou Out of virtual memory ou Virtual memory exhaustedLe problème est que
gcc requiert de grandes quantité de mémoire pour compiler
`sql_yacc.cc' avec les fonctions inline. Essayez d'exécuter configure avec
l'option --with-low-memory :
shell> ./configure --with-low-memoryCette option ajoute
-fno-inline dans la ligne de compilation, si vous utilisez
gcc et -O0 si vous utilisez autre chose. Vous pouvez essayer
--with-low-memory même si il vous reste suffisamment de mémoire, et que vous
ne pensez pas être limité. Ce problème a été observé sur des systèmes avec
de généreuses configurations, et --with-low-memory résout ce problème.
configure choisit c++ comme compilateur, et
GNU c++ pour les liens avec -lg++. Si vous utilisez gcc,
ce comportement peut poser les problèmes suivants :
configure: error: installation or configuration problem: C++ compiler cannot create executables.Vous pourriez aussi observer des problèmes durant la compilation, avec
g++, libg++ ou libstdc++.
La cause de ces problèmes est que vous avez peut être que vous n'avez pas g++,
ou que vous avez g++ mais pas libg++, ou libstdc++. Regardez
le fichier de log `config.log'. Il va sûrement contenir la raison exacte du mauvais
fonctionnement de votre compilateur. Pour contourner ce problème, vous pouvez utiliser
gcc comme compilateur C++. Essayez de modifier la variable d'environnement CXX
avec la valeur "gcc -O3". Par exemple :
shell> CXX="gcc -O3" ./configureCela fonctionne car
gcc compile les sources C++ aussi bien que g++,
mais il n'est pas lié avec libg++ ou libstdc++ par défaut.
Un autre moyen pour régler ces problèmes, bien sur, est d'installer
g++, libg++ et libstdc++. Nous vous recommandons toutefois
de ne pas utiliser libg++ ou libstdc++ avec MySQL car cela ne fera
qu'accroître la taille de votre exécutable binaire, sans vous apporter
d'avantages. Par le passé, certaines versions de ces librairies ont posé des problèmes
étranges aux utilisateurs MySQL.
make en GNU make:
making all in mit-pthreads make: Fatal error in reader: Makefile, line 18: Badly formed macro assignment ou make: file `Makefile' line 18: Must be a separator (: ou pthread.h: No such file or directorySolaris et FreeBSD sont connus pour avoir des problèmes avec
make.
GNU make version 3.75 est reconnu pour fonctionner.
CFLAGS et CXXFLAGS. Vous pouvez aussi spécifier le nom du compilateur
via les variables CC et CXX. Par exemple :
shell> CC=gcc shell> CFLAGS=-O3 shell> CXX=gcc shell> CXXFLAGS=-O3 shell> export CC CFLAGS CXX CXXFLAGSVoyez section 2.2.10 Binaires compilés par MySQL AB, pour avoir une liste des définitions des options disponibles sur divers systèmes.
gcc :
client/libmysql.c:273: parse error before `__attribute__'
gcc 2.8.1 est connu pour fonctionner, mais nous recommandons l'utilisation de
gcc 2.95.2 ou egcs 1.0.3a.
mysqld, c'est que configure n'a pas correctement
détecter le dernier argument des fonctions
accept(), getsockname() ou getpeername() :
cxx: Error: mysqld.cc, line 645: In this statement, the referenced
type of the pointer value "&length" is "unsigned long", which
is not compatible with "int".
new_sock = accept(sock, (struct sockaddr *)&cAddr, &length);
Pour corriger ce problème, éditez le fichier `config.h' (qui est généré par
le fichier configure). Recherchez ces lignes :
/* Define as the base type of the last arg to accept */ #define SOCKET_SIZE_TYPE XXXRemplacez
XXX par size_t ou int, suivant votre système
d'exploitation. Notez que vous devrez faire cette manipulation à chaque fois
que vous exécuterez le script configure car configure regénère
`config.h'.
"sql_yacc.yy", line xxx fatal: default action causes potential...Cela indique que votre version de
yacc est inadéquate.
Vous devrez probablement réinstaller bison (la version GNU de
yacc) et l'utiliser à la place.
mysqld ou un client MySQL, exécutez le
script configure avec l'option --with-debug, puis recompilez
vos clients avec la nouvelle librairie. See section D.2 Débogage un client MySQL.
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.
configure avec l'option --with-mit-threads :
shell> ./configure --with-mit-threadsLa compilation dans un dossier non-sources n'est pas supporté lors de l'utilisation des MIT-pthreads car nous voulons minimiser les changements de leur code.
--without-server pour ne construire que le client,
les clients ne sauront pas si les MIT-pthreads sont utilisés et utiliserons les socket
Unix pour les connexions par défaut.
Puisque les sockets Unix ne fonctionnent pas avec les MIT-pthreads sur certaines
plate-formes, cela signifie que vous devrez utiliser -h ou --host quand
vous exécuterez les programmes clients.
--external-locking. Cela n'est requis que si vous avez besoin de
faire fonctionner deux serveurs MySQL avec les mêmes données (non recommandé).
bind() des pthreads n'arrive pas à attacher
une socket sans afficher d'erreurs (du mois, sous Solaris). Le résultat est que
toutes les connexions au serveur échouent.
Par exemple :
shell> mysqladmin version mysqladmin: connect to server at '' failed; error: 'Can't connect to mysql server on localhost (146)'La solution est de terminer le serveur
mysqld et de le redémarrer.
Cela ne nous est arrivé que quand nous avons forcé le serveur à se terminer
et que nous l'avons redémarré immédiatement après.
sleep() n'est pas interruptible avec
SIGINT (break). On ne s'en rend compte que quand on exécute mysqladmin --sleep.
Vous devez attendre que l'appel système à sleep() se termine avant que le processus
ne s'arrête.
ld: warning: symbol `_iob' has differing sizes:
(file /my/local/pthreads/lib/libpthread.a(findfp.o) value=0x4;
file /usr/lib/libc.so value=0x140);
/my/local/pthreads/lib/libpthread.a(findfp.o) definition taken
ld: warning: symbol `__iob' has differing sizes:
(file /my/local/pthreads/lib/libpthread.a(findfp.o) value=0x4;
file /usr/lib/libc.so value=0x140);
/my/local/pthreads/lib/libpthread.a(findfp.o) definition taken
implicit declaration of function `int strtoll(...)' implicit declaration of function `int strtoul(...)'
readline avec les MIT-pthreads.
(Cela n'est pas nécessaire, mais peut être utile à quelqu'un.)
Vous aurez besoin de :
Compiler MySQL
Fichier, sélectionnez Ouvrir un espace de travail.
Générer,
sélectionnez le menu Choisir la configuration active.
mysqld - Win32 Debug
puis cliquez sur OK.
F7 pour commencer à compiler le serveur de débogage, les bibliothèques, et
quelques applications clientes.
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.
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 :
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_dbTypiquement,
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 :
mysql_install_db avant de l'exécuter, pour
modifier les droits initiaux qui sont implantés dans les tables de droits.
C'est pratique si vous voulez installer MySQL sur de nombreuses machines, avec
les mêmes droits. Dans ce cas, vous aurez probablement à ajouter quelques
insertions INSERT dans les tables mysql.user et mysql.db!
mysql_install_db, puis utiliser
mysql -u root mysql pour vous connecter aux tables de droit en tant
que root MySQL, et exécuter les commandes SQL nécessaires, directement
dans les tables de droits.
mysql_install_db.
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.
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 variablesLe 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: 16773KPour savoir ce que vous pouvez faire d'autre avec
BINDIR/mysqladmin,
appelez le avec l'option --help.
shell> BINDIR/mysqladmin -u root shutdown
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.
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-testsSi 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.tstLes résultats attendus sont présentés dans le fichier `./tests/auto_increment.res'.
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
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 endedDans 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.
mysqld fonctionne déjà
mysql_install_db du tout.
Vous avez exécuté mysql_install_db une fois, lorsque vous avez installé
MySQL pour la première fois.
mysqld n'est pas possible lorsque le premier fonctionne.
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.
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_PORTVoir 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
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 mysqlDans 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.
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 :
mysql.server. Ce script est utilisé à la base au
moment du démarrage et de l'extinction du système, et il est décrit avec plus
de détail dans le chapitre section 2.4.3 Lancer et arrêter MySQL automatiquement..
safe_mysqld, qui va déterminer les options correctes pour
mysqld puis utiliser ces options. See section 4.7.2 safe_mysqld, le script père de mysqld.
mysqld directement.
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.
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'.
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.
En général, voici ce que vous devez faire lorsque vous passez à la version 4.1, depuis une version plus ancienne :
mysql_fix_privilege_tables pour générer un
nouveau champs de mot de passe, nécessaire à la gestion de ces
derniers.
Voici une liste plus complète, vous indiquant ce à quoi vous devez faire attention lors du changement de version :
mysql> SELECT cast("2001-1-1" as DATE)
-> '2001-01-01'
SHOW CREATE TABLE et
mysqldump. (MySQL 4.0.6 et plus récent peuvent lire les
nouveaux fichiers de dump, mais pas les plus anciennes versions de MySQL).
TIMESTAMP sont désormais retournés sous la forme de chaîne,
avec le format 'YYYY-MM-DD HH:MM:DD'. Si vous voulez retrouver
le nombre, ajoutez la valeur de 0 a la colonne timestamp. Différentes
tailles de timestamp ne sont pas supportées.
Note: Depuis la version 4.0.12, l'option --new est utilisable
pour que le serveur se comporte comme la version 4.1.
Cela peut permettre de préparer la mise à jour de 4.0 en 4.1.
--shared_memory_base_name avec des
valeurs différentes sur toutes les machines.
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.
TIMESTAMP est retourné sous forme de chaîne, au format
'AAAA-MM-JJ HH:MM:SS'. Si vous voulez l'obtenir sous forme de nombre
(comme ne version 4.0), vous devrez ajouter +0 à la colonne de type timestamp.
Différentes tailles de timestamp ne sont pas supportés.
Note: Depuis la version 4.0.12, l'option --new peut être
utilisée pour que le serveur se comporte comme en version 4.1.
Cela vous aidera à préparer le passage de version 4.0 en 4.1.
En général, ce que vous devez faire pour passer en version 4.0, à partir d'une version plus ancienne :
mysql_fix_privilege_tables pour ajouter de nouveaux
droits et fonctionnalités à a table MySQL.
ISAM en tables MyISAM avec la
commande : mysql_convert_table_format database. Notez que cela ne doit
être fait que si toutes les tables de la base sont des tables ISAM ou MyISAM.
Si ce n'est pas le cas, vous devrez alors utiliser la commande
ALTER TABLE table_name TYPE=MyISAM sur toutes les tables ISAM.
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 :
mysql.user.
See section 4.3.1 Syntaxe de GRANT et REVOKE.
Pour faire fonctionner ces nouveaux droits, vous devez exécuter le script
mysql_fix_privilege_tables. Jusqu'à ce que ce script soit exécuté, les utilisateurs
auront les droits de SHOW DATABASES, CREATE TEMPORARY TABLES,
et LOCK TABLES. Les droits de SUPER et EXECUTE héritent leur
valeur du droit de PROCESS.
REPLICATION SLAVE et REPLICATION CLIENT héritent leur valeur de
FILE.
Si vous avez un script qui crée automatiquement des nouveaux utilisateur,
vous devez le modifier pour y inclure les nouveaux droits. Si vous n'utilisez
pas la commande GRANT dans ces scripts, c'est une bonne idée que de
les vérifier.
En version 4.0.2, l'option --safe-show-database est abandonnée
(et ne fait plus rien du tout). See section 4.2.3 Options de démarrage qui concernent la sécurité.
Si vous obtenez des interdictions d'accès pour les nouveaux utilisateurs
en version 4.0.2, vous devriez vérifier si vous avez besoin de nouveaux
droits que vous n'utilisiez pas avant. En particulier, vous aurez besoin
du droit de REPLICATION SLAVE (au lieu de FILE) pour les nouveaux
esclaves.
myisam_max_extra_sort_file_size et
myisam_max_extra_sort_file_size sont désormais exprimés en octets,
et non plus en Mo, comme cela était le cas jusqu'en version 4.0.3).
Les systèmes externes de verrouillages des tables MyISAM/ISAM sont désormais
désactivés par défaut. Vous pouvez les réactiver avec l'option --external-locking
Pour la plupart des utilisateurs, ce n'est jamais nécessaire.
| Ancien nom | Nouveau nom. |
myisam_bulk_insert_tree_size | bulk_insert_buffer_size
|
query_cache_startup_type | query_cache_type
|
record_buffer | read_buffer_size
|
record_rnd_buffer | read_rnd_buffer_size
|
sort_buffer | sort_buffer_size
|
warnings | log-warnings
|
err-log | --log-error (for mysqld_safe)
|
record_buffer, sort_buffer et
warnings vont encore fonctionner avec MySQL 4.0 mais elles sont obsolètes.
| Ancien nom | Nouveau nom. |
SQL_BIG_TABLES | BIG_TABLES
|
SQL_LOW_PRIORITY_UPDATES | LOW_PRIORITY_UPDATES
|
SQL_MAX_JOIN_SIZE | MAX_JOIN_SIZE
|
SQL_QUERY_CACHE_TYPE | QUERY_CACHE_TYPE
|
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=# au lieu
de SET SQL_SLAVE_SKIP_COUNTER=#.
--skip-locking en
--skip-external-locking et --enable-locking en
--external-locking.
SHOW MASTER STATUS retourne désormais une liste vide si les logs binaires
ne sont pas activés.
SHOW SLAVE STATUS retourne désormais une liste vide si l'esclave n'est pas
initialisé.
mysqld dispose désormais de l'option --temp-pool activée par
défaut, car cela donne de meilleurs performances sur certains systèmes d'exploitation.
DOUBLE et FLOAT acceptent désormais l'option
UNSIGNED pour le stockage (auparavant, UNSIGNED était ignoré pour ces
colonnes).
ORDER BY column DESC trie désormais les valeurs NULL en premier.
En version 3.23, ce n'était pas toujours le cas.
SHOW INDEX a 2 colonnes de plus (Null et Index_type)
qu'il n'avait pas en version 3.23.
CHECK, SIGNED, LOCALTIME et LOCALTIMESTAMP
sont des mots réservés.
|, &, <<,
>> et ~ est maintenant non signé. Cela peut poser des problèmes
si vous aviez un contexte dans lequel vous souhaitez un résultat signé.
See section 6.3.5 Fonctions de transtypage.
UNSIGNED, le résultat sera non signé! En d'autres
termes, avant de passer à la version MySQL 4.0, vous devriez vérifier les
situations où votre application soustrait une valeur d'un entier non signé,
et que vous attendez une valeur négative, ou si vous soustrayez une valeur
non signée d'une colonne. Vous pouvez désactiver ce comportement en utilisant
l'option de démarrage --sql-mode=NO_UNSIGNED_SUBTRACTION lorsque vous
démarrez mysqld. See section 6.3.5 Fonctions de transtypage.
MATCH ... AGAINST (... IN BOOLEAN MODE) avec vos table,s
vous devez les reconstruire avec ALTER TABLE table_name TYPE=MyISAM,
même si la table est déjà au format MyISAM.
LOCATE() et INSTR() sont sensibles à la casse, si l'un des
arguments est une chaîne binaire. Sinon, ils sont insensibles à la casse.
STRCMP() utilise désormais le jeu de caractères courant pour les
comparaisons, ce qui signifie que le comportement par défaut des comparaisons
est désormais insensible à la casse.
HEX(string) retourne désormais les caractères convertis sous la forme
d'une chaîne hexadécimale. Si vous voulez convertir un nombre en hexadécimal,
vous devez vous assurer d'appeler HEX() avec un argument numérique.
INSERT INTO ... SELECT fonctionne toujours avec l'option
IGNORE. En version 4.0.1, MySQL va s'arrêter (et peut être annuler la
transaction) si vous ne spécifiez pas l'option IGNORE.
safe_mysqld vous la forme d'un lien symbolique vers mysqld_safe.
mysql_drop_db, mysql_create_db et
mysql_connect ne sont plus supportées, à moins que vous ne compiliez
MySQL avec CFLAGS=-DUSE_OLD_FUNCTIONS. Au lieu de cela, il sera plus sage
de changer vos programmes, pour qu'il utilisent la nouvelle API 4.0.
MYSQL_FIELD, length et max_length ont
évolué de unsigned int en unsigned long. Cela ne va pas causer
de problèmes, hormis le fait qu'ils peuvent générer des messages d'alerte lorsqu'ils
sont utilisé comme argument de fonctions comme printf().
TRUNCATE TABLE lorsque vous voulez effacer
toutes les lignes d'une table, et que vous ne souhaitez pas savoir combien de lignes
ont été effacées de la table (car TRUNCATE TABLE est plus rapide que
DELETE FROM table_name).
TRUNCATE TABLE ou DROP DATABASE.
SHOW OPEN TABLE a été changé.
mysql_thread_init() et
mysql_thread_end(). See section 8.4.14 Comment faire un client MySQL threadé.
drop_db() abandonnée.
RAND(seed) retourne un nombre différent en version 4.0 qu'en version
3.23 : cela est fait pour différencier plus fortement RAND(seed) de
RAND(seed+1).
IFNULL(A,B) est maintenant le plus
gŽnŽral des deux types A et B. (L'ordre est
STRING, REAL puis INTEGER).
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 :
tis620 doivent
être corrigées avec myisamchk -r ou REPAIR TABLE.
DROP DATABASE sur un lien symbolique,
le lien et la base originale seront effacés. Cela n'arrivait pas en 3.22
car configure ne détectait pas les appels à readlink.
OPTIMIZE TABLE ne fonctionne que pour les tables MyISAM.
Pour les autres types de tables, vous devez utiliser ALTER TABLE pour
optimiser la table. Durant la commande OPTIMIZE TABLE, la table est
verrouillée.
mysql est démarré par défaut avec l'option
option --no-named-commands (-g). Cette option peut être désactivée avec
--enable-named-commands (-G). Cela peut causer des problèmes d'incompatibilité
dans certains cas : par exemple, dans les scripts SQL qui utilisent des
commandes nommées sans point virgule! Le format long de la commande devrait
fonctionner correctement.
MONTH())
vont désormais retourner 0 pour la date 0000-00-00. (MySQL 3.22 retournait
NULL.)
allemand pour les tris, vous devez
réparer vos tables avec isamchk -r, car nous avons fait des modifications
dans l'ordre de tri.
IF dépendant maintenant des deux arguments,
et plus seulement du premier.
AUTO_INCREMENT ne fonctionne pas sur les nombres négatifs. La raison pour
cela est que les nombres négatifs posaient des problèmes d'écrasement entre -1 et 0.
AUTO_INCREMENT pour les tables MyISAM est maintenant géré à un niveau
plus bas, et il est bien plus rapide. Pour les tables MyISAM, les anciens
numéros ne sont plus réutilisés, même si vous effacez des lignes dans la table.
CASE, DELAYED, ELSE, END, FULLTEXT,
INNER, RIGHT, THEN et WHEN sont de nouveaux mots réservés.
FLOAT(X) est maintenant un véritable type de nombre à virgule flottante,
avec un nombre défini de décimales.
DECIMAL(length,dec), la taille de l'argument
n'inclut plus une place pour le signe ou le séparateur décimal.
TIME doit être fournie au format suivant :
[[[DAYS] [H]H:]MM:]SS[.fraction] ou
[[[[[H]H]H]H]MM]SS[.fraction].
LIKE compare maintenant les chaînes en appliquant les mêmes règles que
=. Si vous voulez l'ancien comportement, vous pouvez compiler MySQL avec
l'option CXXFLAGS=-DLIKE_CMP_TOUPPER.
REGEXP est maintenant insensible à la casse pour les chaînes normales (non binaires).
CHECK TABLE
ou myisamchk pour les tables MyISAM (`.MYI') et
isamchk pour les tables ISAM (`.ISM').
mysqldump soit compatibles
entre les versions MySQL 3.22 et 3.23, vous ne devez pas utiliser
l'option --opt ou --all de mysqldump.
DATE_FORMAT() pour vous assurer qu'il
y a un signe pourcentage `%' avant chaque caractère de format
(MySQL version 3.22 et plus récent avait déjà cette syntaxe).
mysql_fetch_fields_direct est maintenant une fonction (c'était une
macro), qui retourne un pointeur sur MYSQL_FIELD au lieu de
MYSQL_FIELD.
mysql_num_fields() ne peut plus être utilisé sur les objets MYSQL*
(c'est maintenant une fonction qui prend MYSQL_RES* comme argument. Il faut
donc utiliser mysql_field_count() à la place).
SELECT DISTINCT ... était
toujours trié. En version 3.23, vous devez spécifier la clause GROUP BY ou
ORDER BY pour obtenir un résultat trié.
SUM() retourne désormais NULL, au lieu de 0, si
il n'y a pas de lignes à calculer. Ceci s'accorde avec la norme SQL.
AND ou OR avec les valeurs NULL vont désormais retourner
NULL au lieu de 0. Cela affecte surtout les requêtes qui utilisait NOT
ou une expression AND/OR telle que NOT NULL = NULL.
LPAD() et RPAD() vont réduire la taille de la chaîne résultante,
si elle est plus grand que l'argument de taille.
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.
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 :
MyODBC 2.x.
scripts/add_long_password doit être utilisé pour convertir
le champs Password de la table mysql.user en CHAR(16).
mysql.user
pour utiliser les mots de 62 bits au lieu de 31 bits.
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 :
HAVING doit être spécifié avant la clause ORDER BY.
LOCATE() ont été échangés.
DATE,
TIME et TIMESTAMP.
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.
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 :
-Lpath) :
-Wl,r/path-libmysqlclient.so.
libmysqclient.so dans `/usr/lib'.
LD_RUN_PATH avant de mettre en marche votre client.
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
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 :
tar.gz)
et installez la à la place.
mysql_install_db --force; cela n'exécutera pas le test
resolveip dans mysql_install_db. Le mauvais côté est que
vous ne pourrez pas utiliser de noms d'hôtes dans les tables de droits;
vous devez utiliser les adresses IP à la place (sauf pour localhost).
Si vous utilisez une vielle version de MySQL qui ne supporte pas --force,
vous devez supprimer le test resolveip dans mysql_install à l'aide
d'un éditeur.
mysqld avec su au lieu d'utiliser --user.
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.
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
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.
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:
gdb 4.18. Vous devez télécharger et utiliser gdb 5.1
à la place !
mysqld en utilisant gcc,
l'image résultante videra son noyau (core dump) au démarrage. En d'autres termes,
n'utilisez pas --with-mysqld-ldflags=-all-static avec gcc.
MySQL devrait fonctionner sur MkLinux avec le dernier package glibc
(testé avec glibc 2.0.7).
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).
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.
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.
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!
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.
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.
Voici une note pour connecter un serveur MySQL avec une connexion sécurisée grâce à SSH (de David Carlson dcarlson@mplcomm.com) :
SecureCRT de http://www.vandyke.com/.
Une autre option est f-secure de http://www.f-secure.com/. Vous pouvez
aussi en trouver d'autres de gratuit avec Google à
http://directory.google.com/Top/Computers/Security/Products_and_Tools/Cryptography/SSH/Clients/Windows/.
Host_Name = yourmysqlserver_URL_or_IP.
Spécifiez userid=your_userid pour vous loger dans votre serveur
(probablement avec un mot de passe et un nom d'utilisateur différent).
local_port: 3306, remote_host: yourmysqlservername_or_ip, remote_port: 3306 )
soit un forward local (spécifiez port: 3306, host: localhost, remote port: 3306).
localhost comme hôte serveur
au lieu de yourmysqlservername.
Vous avez maintenant une connexion ODBC avec un serveur MySQL distant, et sécurisée avec SSH.
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.
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é !
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 :
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.
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.
mysqladmin kill ne fonctionne pas sur une connexion endormie.
mysqladmin shutdown ne peut pas s'exécuter tant qu'il y a des
connexions qui dorment.
DROP DATABASE
mysqladmin shutdown.
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
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 = localhostDepuis la version 3.23.50, les pipes nommés sont les seuls activés si
mysqld est démarré avec --enable-named-pipe.
Access denied for user
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
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.
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.
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 :
MYSQL.DLL.
Elle inclurait toutes les caractéristiques d'un serveur MySQL standard,
hormis la création de threads. Cela permettra d'inclure facilement MySQL
dans des applications qui n'ont pas vraiment besoin du support client,
ou qui n'ont pas besoin d'accéder à un serveur distant.
mysqld est enregistré comme service avec --install (sous NT)
il serait bien de pouvoir ajouter les options par défaut de la ligne de commande.
Pour le moment, le palliatif consiste à lister les paramètres dans le fichier
`C:\my.cnf'.
mysqld
depuis le gestionnaire de tâches. Pour le moment, il faut passer par
mysqladmin shutdown.
readline sur Windows pour pouvoir l'utiliser avec l'outil de ligne
de commande mysql.
mysql,
mysqlshow, mysqladmin et mysqldump) seraient bien.
mysqladmin kill sous Windows.
mysqld se lance toujours avec la locale "C" et non pas avec la locale
par défaut. Nous voulons que mysqld utilise la configuration de localisation
pour l'ordre de tri.
D'autres spécificités de Windows sont décrites dans le fichier `README' qui est livré avec la distribution Windows de MySQL.
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 :
-Lpath) :
-Wl,r/full-path-to-libmysqlclient.so.
LD_RUN_PATH avant de
lancer votre client.
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 :
--with-named-z-libs=no.
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.
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 :
CFLAGS=-DHAVE_CURSES_H CXXFLAGS=-DHAVE_CURSES_H ./configure.
#define HAVE_TERM di fichier `config.h' et exécutez
make à nouveau.
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 :
LD_LIBRARY_PATH.
--with-named-z-libs=no.
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.
Cette section fournit des informations pour les différentes variétés de BSD, ainsi que les versions spécifiques de celles-ci.
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.
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++.
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
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
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.
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.
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).
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.
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
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 :
shell> /usr/sbin/swinstall -s /chemin/vers/depot mysql.full
shell> /usr/sbin/swinstall -s /chemin/vers/depot mysql.server
shell> /usr/sbin/swinstall -s /chemin/vers/depot mysql.client
shell> /usr/sbin/swinstall -s /chemin/vers/depot mysql.developer
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.
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
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.
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.
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.
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
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.
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
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)
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.
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.
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.
./configure dans le dossier `threads/src' et sélectionnez
l'option SCO OpenServer. Cette commande copie `Makefile.SCO5' dans
`Makefile'.
make.
root, puis utilisez cd vers le dossier `thread/src', et exécutez la commande
make install.
make pour compiler MySQL.
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.
gcc 2.95.2 ou plus récent!
La commande configure suivante doit fonctionner :
shell> ./configure --prefix=/usr/local/mysql --disable-shared
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):
mysqld
avec -lgthreads -lsocket -lgthreads.
malloc. Si vous avez des problèmes d'utilisation de mémoire,
assurez vous que `gmalloc.o' est inclus dans `libgthreads.a' et
`libgthreads.so'.
read(), write(), getmsg(), connect(), accept(),
select() et wait().
mysqld sur un serveur OpenServer 5.0.6.
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.
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.
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";
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.
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.
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 :
shell> gunzip < Data-Dumper-VERSION.tar.gz | tar xvf -Cette commande crée un dossier appelé `Data-Dumper-VERSION'.
shell> cd Data-Dumper-VERSION
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.
Pour installer le module DBD MySQL avec ActiveState Perl sous
Windows, vous devez faire ce qui suit :
set HTTP_proxy=my.proxy.com:3128
C:\> c:\perl\bin\ppm.pl
DBI, si ce n'est pas déjà fait :
ppm> install DBI
install \ ftp://ftp.de.uu.net/pub/CPAN/authors/id/JWIED/DBD-mysql-1.2212.x86.ppd
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";
Cette distribution Perl de MySQL contient DBI,
DBD:MySQL et DBD:ODBC.
C: pour obtenir le dossier `C:\PERL'.
perl fonctionne en exécutant perl -v dans un terminal DOS.
DBI et DBDSi 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 :
Msql-Mysql-modules avec perl
Makefile.PL -static -config au lieu de perl Makefile.PL.
LD_RUN_PATH.
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.