Le serveur MySQL ne démarre pas lors du démarrage

J'ai installé MySQL sur un RHEL 5 server et je souhaite le configurer pour que le serveur commence au démarrage.

J'ai exécuté la chkconfig --list mysqld et elle fonctionne actuellement aux niveaux 3, 4 et 5. Cependant, lorsque je redémarre le serveur, aucun mysqld daemon n'est démarré.

J'ai également essayé de démarrer manuellement le serveur en exécutant /usr/bin/mysqld_safe et j'obtiens la sortie suivante:

 Starting mysqld daemon with databases from /var/lib/mysql STOPPING server from pid file /var/run/mysqld/mysqld.pid 100319 10:31:30 mysqld ended 

J'ai regardé dans /var/log/mysqld.log et j'ai trouvé ce qui suit:

 100319 10:29:01 mysqld started 100319 10:29:02 InnoDB: Started; log sequence number 0 29752204 100319 10:29:02 [ERROR] Can't start server : Bind on unix socket: Permission denied 100319 10:29:02 [ERROR] Do you already have another mysqld server running on socket: /var/lib/mysql/mysql.sock ? 100319 10:29:02 [ERROR] Aborting 

MISE À JOUR: J'ai essayé de commencer à utiliser le script mysql.server (de /usr/share/mysql ) et cela a fonctionné. Ainsi, je suis allé de l'avant et j'ai lié ce script aux niveaux d'exécution appropriés ( rc0.d , rc3.d et rc5.d ) . Cependant, il ne démarre toujours pas lors du démarrage.

Cette version de mysqld provient-elle du référentiel officiel ou d'un rpm que vous avez téléchargé à partir de mysql.com?

Si le script mysql.server fonctionne, vous devriez pouvoir le copier dans /etc/init.d puis créer un lien symbolique à partir de /etc/rc3.d rc4.d et rc5.d.

Edit: Mais vous devrez utiliser chkconfig pour désactiver mysqld avant d'effectuer les liens symboliques.

Supprimez /var/lib/mysql/mysql.sock puis chkconfig mysqld. Vous pouvez obtenir un menu de services en exécutant ntsysv. Utilisez man chkconfig et man ntsysv pour en savoir plus sur la façon d'utiliser ces programmes.

Vous pouvez également installer le package strace (il est dans le dépôt YUM standard), puis exécutez:

 strace /etc/init.d/mysqld start 

Vous devriez pouvoir déterminer très rapidement où réside l'erreur.

Sur RHEL / CentOS, vous souhaitez généralement utiliser le script d'init pour arrêter et démarrer le démon mysqld – il fait beaucoup plus que simplement start /usr/bin/mysqld_safe& .

Avez-vous déjà un autre serveur mysqld en cours d'exécution sur le socket: /var/lib/mysql/mysql.sock?

Netstat -l -p -d en tant que root et voir si quelque chose écoute sur le port mysql.

Si le processus n'est pas déjà en cours d'exécution, voici quelques options que je vois …

  • Est-ce que quelque chose d'autre écoute sur 3306? (Improbable)
  • Vous exécutez en tant qu'utilisateur qui n'a pas accès à /var/lib/mysql/mysql.sock. Vous pouvez essayer de supprimer ce fichier et redémarrer le démon.