31 votes

Impossible de démarrer/arrêter le service mysql

Prise en charge d'un serveur web Debian Etch avec MySQL en fonctionnement.

Je démarre, arrête et redémarre habituellement msyql en utilisant :

/etc/init.d/mysql restart

Pour une raison quelconque, avec cette configuration, j'obtiens le résultat suivant :

:~# /etc/init.d/mysql stop

Arrêt du serveur de base de données MySQL : mysqld a échoué !

Le processus mysql fonctionne bien :

:~# ps aux | grep mysql 
root      2045  0.0  0.1   2676  1332 ?        S    Jun25   0:00 /bin/sh /usr/bin/mysqld_safe
mysql     2082  0.6 10.7 752544 111188 ?       Sl   Jun25  18:49 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --user=mysql --pid-file=/var/run/mysqld/mysqld.pid --skip-external-locking --port=3306 --socket=/var/run/mysqld/mysqld.sock
root      2083  0.0  0.0   1568   504 ?        S    Jun25   0:00 logger -p daemon.err -t mysqld_safe -i -t mysqld
root     11063  0.0  0.0   2856   716 pts/0    S+   17:29   0:00 grep mysql

Je suis sûr qu'il existe des moyens très simples de le faire, mais je veux aussi comprendre ce qui se passe. Pourquoi la méthode classique ne fonctionne-t-elle pas pour moi ?

EDIT UPDATE comme une mise à jour :

JBRLSVR001:/var/log/mysql# mysqladmin shutdown
JBRLSVR001:/var/log/mysql# dpkg --list mysql\*
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Installed/Config-files/Unpacked/Failed-config/Half-installed 
|/ Err?=(none)/Hold/Reinst-required/X=both-problems (Status,Err: uppercase=bad)
||/ Name                                         Version                                      Description
 +++-============================================-============================================-========================================================================================================
un  mysql-client                                 <none>                                       (no description available)
un  mysql-client-4.1                             <none>                                       (no description available)
ii  mysql-client-5.0                             5.0.32-7etch8                                mysql database client binaries
ii  mysql-common                                 5.0.32-7etch8                                mysql database common files (e.g. /etc/mysql /my.cnf)
un  mysql-common-4.1                             <none>                                       (no description available)
ii  mysql-server                                 5.0.32-7etch8                                mysql database server (meta package depending on the latest version)
un  mysql-server-4.1                             <none>                                       (no description available)
ii  mysql-server-5.0                             5.0.32-7etch8                                mysql database server binaries

L'arrêt de mysqladmin fonctionne mais je suis toujours curieux de savoir pourquoi les commandes /etc/init.d/mysql ne fonctionnent pas.

0 votes

Pour moi, le problème était que l'installation faite à la main recherchait /tmp/mysql.sock au lieu de /var/run/mysqld/mysqld.sock . Ainsi, le script des mainteneurs Debian émettait une erreur, silencieusement. Il suffit de corriger socket= dans le /etc/mysql/debian.cnf

2voto

kashani Points 3862

En supposant que le paquet est quelque peu étrange, le problème pourrait être le fichier pid. Je soupçonne que les nouveaux paquets ou l'installation compilée n'ont pas créé /var/run/mysql/ ou ce qui est standard sur Debian pour que le fichier pid soit écrit ou que le script init cherche le fichier mysqld.pid à un autre endroit. Si vous pouvez corriger le décalage entre le fichier init et le fichier pid, les choses devraient probablement fonctionner.

0 votes

Le script init n'utilise pas le fichier pid pour arrêter le serveur.

1voto

nixgeek Points 874

L'utilisation de "pkill mysql" risque également de vous faire perdre des données, en particulier si elle est invoquée comme "pkill -9" :(

Je recommanderais également d'utiliser 'sh -x' pour voir quel est le problème avec le script d'init, et vous pouvez également regarder dans les journaux d'erreurs pour MySQL (/var/log/mysql ou /var/lib/mysql, en fonction de la configuration) pour voir s'il est coincé sur un realmente une requête de longue haleine ou quelque chose du genre et ne veut donc pas encore abandonner gracieusement.

1voto

Yvan Points 330

Pour faire suite au commentaire de votre question, je vais rédiger une réponse complète :

Le problème est que le socket par défaut est /tmp/mysql.sock avec la source MySQL, et /var/run/mysqld/mysqld.sock avec les binaires Debian.

La solution consiste à réparer le chemin de la prise en /etc/mysql/debian.cnf en fournissant le bien socket= . Ou en le conservant, mais en changeant celui de la section /etc/mysql/my.cnf .

Voici comment j'ai découvert cela : dans /etc/init.d/mysql quand il y a le message "failed", vous avez cette ligne appelée :

echo -e "$ps_alive processes alive and '$MYADMIN ping' resulted in\n$ping_output\n" | $ERR_LOGGER -p daemon.debug

Cela m'a conduit à $MYADMIN ping qui est mysqladmin --defaults-file=/etc/mysql/debian.cnf ping . L'exécution de cette même commande se termine sur :

/usr/bin/mysqladmin : la connexion au serveur à 'localhost' a échoué

error : 'Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)'.

Vérifiez que mysqld fonctionne et que le socket : /var/run/mysqld/mysqld.sock' existe !

J'ai donc jeté un coup d'œil à /etc/mysql/debian.cnf et j'ai découvert que c'était la mauvaise prise.

0voto

Utilisez la commande suivante :

$mysqladmin shutdown

ceci devrait être disponible dans le répertoire /usr/bin dans votre cas.

0voto

Luke Girvin Points 8270

Vous devez être un super utilisateur pour démarrer et arrêter mysql (et la plupart des autres services) sous Debian.

Je ne sais pas si vous l'êtes déjà ou non... si non, vous devez faire l'une des choses suivantes

  • Connectez-vous en tant que root
  • mettez sudo avant votre commande /etc/init.d/mysql restart (il vous demandera votre mot de passe, et vous devrez être dans le groupe sudoers)

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X