• Aucun résultat trouvé

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

.