Lancer et arrêter MySQL automatiquement
<<<
Problèmes de démarrage du serveur MySQL Procédure de post-installation
>>>

2.4.2 Procédures de post-installation sous Unix
2.4 Procédure de post-installation
2 Installer MySQL
 Manuel de Référence MySQL 4.1 : Version Française

Problèmes d'exécution de mysql_install_db
Lancer et arrêter MySQL automatiquement
->Problèmes de démarrage du serveur MySQL

2.4.2.3 Problèmes de démarrage du serveur MySQL

Si vous avez des problèmes pour lancer le serveur, voici quelques pistes que vous pouvez essayer :

  • Spécifiez toutes les options spéciales nécessaires aux moteurs de tables que vous utilisez.
  • Assurez vous que le serveur sait où trouver le dossier de données.
  • Assurez vous que le serveur peut utiliser le dossier de données. Le propriétaire et les droits du dossier de données et son contenu doivent être accessibles au serveur, en lecture et écriture.
  • Vérifiez le log d'erreurs pour voir pourquoi le serveur ne démarre pas.
  • Vérifiez que les interfaces réseau sont accessibles au serveur.
Certains moteurs de stockage ont des options qui contrôlent leur comportement. Vous devrez créer un fichier d'options my.cnf et y configurer celles des moteurs que vous voulez utiliser. Si vous allez utiliser des tables qui supportent les transactions ( InnoDB , BDB ), assurez vous qu'elles sont bien configurées comme vous le souhaitez.
  • Si vous utilisez les tables InnoDB , voyez les options de démarrages spécifiques à InnoDB . En MySQL version 3.23, vous devez configurer InnoDB explicitement ou le serveur ne pourra pas démarrer. Depuis MySQL 4.0, InnoDB utiliser des valeurs par défaut pour sa configuration, si vous n'en spécifiez pas. Configuration InnoDB .
  • Si vous utilisez les tables BDB (Berkeley DB), vous devez vous familiariser avec les différentes options spécifiques à BDB . Options de démarrage BDB .
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à où il est vraiment, il ne va pas fonctionner correctement. Vous pouvez lire les chemins par défaut en invoquant mysqld avec l'option --verbose ou --help . Avant MySQL 4.1, omettez --verbose .

Si les valeurs par défaut ne correspondent pas à votre installation MySQL , vous pouvez les modifier en spécifiant des options de ligne de commande pour mysqld et mysqld_safe . Vous pouvez aussi lister les options dans un fichier d'options.

Pour spécifier la localisation du dossier de données explicitement, utilisez l'option --datadir . Cependant, vous pouvez spécifier à mysqld le chemin du dossier de base sous lequel MySQL est installé, et il va rechercher le dossier de données là. Vous pouvez faire cela avec l'option --basedir .

Pour vérifier l'effet de ces options, appelez mysqld avec ces options, suivies de --verbose et --help . Par exemple, si vous modifiez le chemin pour celui dans lequel mysqld est installé, alors vous pouvez utiliser la commande suivante, et vous verrez l'effet sur le démarrage du serveur avec une installation de base /usr/local :

shell> ./mysqld --basedir=/usr/local --verbose --help
Vous pouvez spécifier d'autres options comme --datadir , mais notez que --verbose et --help doivent être les dernières options. Avant MySQL 4.1, omettez l'option --verbose .Une fois que vous déterminez les configurations que vous voulez, lancez le serveur avec --verbose et --help .

Si votre démon mysqld fonctionne déjà, vous pouvez connaître les chemins de configuration avec la commande :


shell> mysqladmin variables
ou :

shell> mysqladmin -h host_name variables
host_name est le nom de l'hôte MySQL .Si vous avez une erreur Errcode 13 (ce qui signifie Permission denied ) lorsque vous démarrez mysqld , cela signifie que les droits d'accès au serveur ou son contenu ne sont pas bons. Dans ce cas, vous devez modifier les droits sur les dossiers et fichiers que le serveur va utiliser. Vous pouvez aussi lancer le serveur en tant que root , mais cela pose des problèmes de sécurité, et il vaut mieux l'éviter.

Sous Unix, vérifiez l'existence du dossier de données et vérifiez le nom du propriétaire du dossier de données et de son contenu. Par exemple, si le dossier est /usr/local/mysql/var , utilisez cette commande :


shell> ls -la /usr/local/mysql/var
Si le dossier, ses sous-dossiers ou ses fichiers ne sont pas au nom du compte qui fait tourner le serveur, changez le propriétaire avec cette commande :

shell> chown -R mysql /usr/local/mysql/var
shell> chgrp -R mysql /usr/local/mysql/var
Quelque soit la méthode que vous utilisez pour démarrer le serveur, si elle échoue, vérifiez le fichier de log d'erreurs 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
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 c'est le cas, éteignez le serveur avant de lancer mysqld à nouveau. Si un autre serveur fonctionne, et que vous voulez vraiment en avoir plusieurs, voyez la section Utiliser plusieurs serveurs sur la même machine .)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 . Vous devrez alors rechercher le programme qui utilise ce port, et le désactiver, ou bien dire à mysqld d'écouter sur un autre port avec l'option --port . Dans ce cas, vous devrez aussi spécifier le numéro de port à tous les clients qui se connecte au serveur via TCP/IP.

Une autre raison d'inaccessibilité du port est que vous avez un coupe-feu qui fonctionne, et qui bloque ces port. Pour cela, modifiez la configuration du coupe-feu pour libérer l'accès au port.

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 bibliothèque de threads fonctionnels, ou pour lesquels MySQL a été configuré pour utiliser les MIT-pthreads .Si vous n'arrivez toujours pas à lancer mysqld , vous pouvez essayer de générer un fichier de traces avec l'option --debug . Créer des fichiers de traçage .

<< Problèmes de démarrage du serveur MySQL >>
Lancer et arrêter MySQL automatiquement Procédures de post-installation sous Unix Procédure de post-installation