Pourquoi ne puis-je pas arrêter le service MySQL sur Debian?

11

J'ai juste essayé de passer de debian squeeze à unstable en remplaçant 'squeeze' par 'unstable' dans /etc/apt/sources.list. La mise à niveau s'est bien déroulée, sauf pour MySQL, qui a échoué car il ne pouvait pas arrêter MySQL.

/etc/init.d/mysql stoprenvoie simplement qu'il a échoué, mais si j'essaie d'obtenir le statut, /etc/init.d/mysql statusil me donne cette erreur:

me@debian:~$ sudo /etc/init.d/mysql status
/usr/bin/mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'debian-sys-maint'@'localhost' (using password: YES)'

MySQL fonctionne bien, et j'ai vérifié les autorisations pour debian-sys-maint dans phpmyadmin et il est autorisé à tout faire, mais uniquement à partir de localhost.

anon
la source

Réponses:

6

Essaye ça:

  1. sudo cat /etc/mysql/debian.cnfet recherchez le mot de passe répertorié dans les sections [client]et[mysql_upgrade]

  2. mysql -u root -p password étant le mot de passe racine MySQL d'origine

  3. GRANT ALL PRIVILEGES ON *.* TO 'debian-sys-maint'@'localhost' IDENTIFIED BY '*the password obtained from step 1*';

  4. /etc/init.d/mysql restart

Voilà la solution et c'est le raisonnement derrière elle, si vous êtes intéressé.

Kez
la source
Comme mentionné ci-dessous, cela devrait êtreGRANT ALL PRIVILEGES ON *.*
Dave
2

Une mise à jour de la réponse. À l'étape 3, j'ai dû utiliser

GRANT ALL PRIVILEGES ON *.* TO 'debian-sys-maint'@'localhost' IDENTIFIED BY 'the password obtained from step 1';

Il y a des astérisques autour de la période après "ON". A travaillé pour MySql 5.1

Franc
la source
1

Le manuel de référence MySQL indique que vous pouvez le faire:

  1. Connectez-vous à votre système en tant qu'utilisateur Unix sous lequel le mysqldserveur s'exécute (par exemple, mysql).
  2. Recherchez le .pidfichier contenant l'ID de processus du serveur. L'emplacement et le nom exacts de ce fichier dépendent de votre distribution, nom d'hôte et configuration. Endroits communs sont /var/lib/mysql/, /var/run/mysqld/et /usr/local/mysql/data/. Généralement, le nom de fichier a une extension de .pidet commence par l'un mysqldou par le nom d'hôte de votre système.

Vous pouvez arrêter le serveur MySQL en envoyant un kill normal (pas kill -9) au processus mysqld, en utilisant le nom de chemin du fichier .pid dans la commande suivante:

    kill `cat /mysql-data-directory/host_name.pid`

Cette partie: cat /mysql-data-directory/host_name.pidrenvoie le contenu du fichier, qui est l'ID du processus.

Nabil Kadimi
la source