42 votes

MySQL ne démarre pas en raison d'AppArmor?

Je essaie d'installer mysql-server-5.7 sur Kubuntu 16.04, mais je rencontre des problèmes.

sudo apt install mysql-server donne la sortie suivante.

Mise en route de mysql-server-5.7 (5.7.18-0ubuntu0.16.04.1) ...
Renommage des options key_buffer et myisam-recover supprimées (si présentes)
Le processus de contrôle a échoué avec le code d'erreur. Voir "systemctl status mysql.service" et "journalctl -xe" pour plus de détails.
invoke-rc.d : script d'initialisation mysql, action "démarrer" échouée.
 mysql.service - Serveur Communautaire MySQL
   Chargé : chargé (/lib/systemd/system/mysql.service; activé; paramètres du vendeur: activé)
   Actif : en cours de lancement (redémarrage automatique) (Résultat : code de sortie) depuis ons 2017-05-17 09:48:39 CEST; il y a 10ms
  Processus : 13622 ExecStartPost=/usr/share/mysql/mysql-systemd-start post (code=exited, status=0/SUCCESS)
  Processus : 13621 ExecStart=/usr/sbin/mysqld (code=exited, status=2)
  Processus : 13612 ExecStartPre=/usr/share/mysql/mysql-systemd-start pre (code=exited, status=0/SUCCESS)
PID Principal : 13621 (code=exited, status=2)

maj 17 09:48:39 anis systemd[1]: Échec du démarrage du Serveur Communautaire MySQL.
maj 17 09:48:39 anis systemd[1]: mysql.service : L'unité est entrée dans un état d'échec.
maj 17 09:48:39 anis systemd[1]: mysql.service : Échec avec le résultat 'exit-code'.
...
E: Un sous-processus /usr/bin/dpkg a renvoyé un code d'erreur (1)

Et lorsque j'essaie de résoudre le problème en exécutant journalctl -xe, j'obtiens une sortie comme celle ci-dessous, qui semble indiquer qu'AppArmor me pose problème.

maj 17 09:53:14 anis systemd[1]: Démarrage du Serveur Communautaire MySQL...
-- Sujet : L'unité mysql.service a commencé le démarrage
-- Défini par : systemd
-- Support : http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- L'unité mysql.service a commencé à démarrer.
maj 17 09:53:14 anis audit[14767]: AVC apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/proc/14767/status" pid=14767 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=124 ouid=124
...
maj 17 09:53:14 anis systemd[1]: mysql.service: Le processus principal a quitté, code=exited, status=2/INVALIDARGUMENT

Comment pourrais-je résoudre ce problème?

35voto

Paul A Jungwirth Points 626

Vous devez modifier votre configuration apparmor pour permettre à MySQL d'accéder à ces fichiers. Les messages journaux vous indiquent que /usr/sbin/mysqld a besoin d'un accès en lecture (r) pour ouvrir /proc/14767/status, /sys/devices/system/node/ (barre oblique finale car il veut lire le répertoire) et /proc/14767/task/14767/mem. Le fichier à modifier est /etc/apparmor.d/usr.sbin.mysqld.

Dans mon cas, j'ai résolu le problème en ajoutant ces lignes quelque part au milieu (avec deux espaces devant chacune) :

  /proc/*/status r,
  /sys/devices/system/node/ r,
  /sys/devices/system/node/node0/meminfo r,

(Remarquez la barre oblique finale pour la deuxième ligne.)

Après avoir fait cela, essayez de démarrer MySQL, et si vous obtenez d'autres erreurs, ajoutez également ces fichiers et réessayez.

Ici est une réponse que j'ai donnée à ce problème ailleurs.

6voto

ADDB Points 1527

Il se peut que ce soit ceci : https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=739846 donc essayez d'utiliser

echo "exit 0" >> /etc/init.d/mysql
dpkg --configure -a

si cela ne vous aide pas, utilisez :

sudo apt-get purge mysql-server mysql-client mysql-common mysql-server-5.5
sudo apt-get install mysql-server

pour complètement supprimer votre mysql et le réinstaller Attention : Si vous avez des bases de données, elles seront supprimées.

4voto

Kadir Y. Points 366

J'ai résolu ce problème avec ceci :

Modifier /etc/apparmor.d/local/usr.sbin.mysqld

Ajouter les lignes suivantes :

/data/ r,
/data/** rwk,

recharger le service apparmor

sudo service apparmor reload

1voto

jusme Mi Points 11
  1. arrêtez mysql-serveur
  2. rm /var/lib/mysql/ib_logfile*
  3. redémarrez mysql

0voto

Bhoopesh Pathak Points 159

Dans mon cas, en essayant d'installer mysql-server-5.7 sur Ubuntu 16.04 après avoir utilisé les réponses ci-dessus, la seule chose qui a fonctionné était:

  1. Exécutez sudo apt install mysql-server
  2. Inspecter l'erreur exacte ci-dessus
  3. Redémarrer
  4. Exécutez à nouveau sudo apt install mysql-server pour continuer l'installation

Installation terminée.

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