2.4 Configuration après l'installation, et tests
2.4.2 Problèmes de démarrage du serveur MySQL
Si vous allez utiliser des tables qui supportent les transactions (InnoDB, BDB), vous devez commencer par créer un fichier my.cnf
et y placer les options de démarrage de ces tables. Types de tables MySQL .
Généralement, vous démarrez le serveur mysqld
de l'une de ces façons : En utilisant le script 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 Démarrer et arrêter MySQL automatiquement .
•
En appelant le script safe_mysqld
, qui va déterminer les options correctes pour mysqld
puis utiliser ces options. safe_mysqld
, le script père de mysqld
.
•
Pour Windows NT/2000/XP, voyez Démarrer MySQL avec Windows NT / 2000 / XP .
•
En appelant 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 Problèmes d'exécution de mysql_install_db
et 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. Créer des fichiers de traçage .
Si vous utilisez les tables InnoDB
, reportez vous aux options de configuration spécifiques à InnoDB
. 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. Options de démarrage BDB
.