MySQL ne démarre pas à cause d'AppArmor?


31

J'essaie d'installer mysql-server-5.7 sur Kubuntu 16.04, mais j'ai des problèmes.

sudo apt install mysql-server donne la sortie suivante.

Setting up mysql-server-5.7 (5.7.18-0ubuntu0.16.04.1) ...
Renaming removed key_buffer and myisam-recover options (if present)
Job for mysql.service failed because the control process exited with error code. See "systemctl status mysql.service" and "journalctl -xe" for details.
invoke-rc.d: initscript mysql, action "start" failed.
● mysql.service - MySQL Community Server
   Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
   Active: activating (auto-restart) (Result: exit-code) since ons 2017-05-17 09:48:39 CEST; 10ms ago
  Process: 13622 ExecStartPost=/usr/share/mysql/mysql-systemd-start post (code=exited, status=0/SUCCESS)
  Process: 13621 ExecStart=/usr/sbin/mysqld (code=exited, status=2)
  Process: 13612 ExecStartPre=/usr/share/mysql/mysql-systemd-start pre (code=exited, status=0/SUCCESS)
 Main PID: 13621 (code=exited, status=2)

maj 17 09:48:39 anis systemd[1]: Failed to start MySQL Community Server.
maj 17 09:48:39 anis systemd[1]: mysql.service: Unit entered failed state.
maj 17 09:48:39 anis systemd[1]: mysql.service: Failed with result 'exit-code'.
dpkg: error processing package mysql-server-5.7 (--configure):
 subprocess installed post-installation script returned error exit status 1
dpkg: dependency problems prevent configuration of mysql-server:
 mysql-server depends on mysql-server-5.7; however:
  Package mysql-server-5.7 is not configured yet.

dpkg: error processing package mysql-server (--configure):
 dependency problems - leaving unconfigured
Errors were encountered while processing:
 mysql-server-5.7
 mysql-server
E: Sub-process /usr/bin/dpkg returned an error code (1)

Et lorsque j'essaie de dépanner en exécutant, journalctl -xej'obtiens une sortie comme celle-ci, ce qui semble indiquer que AppArmor me cause des problèmes.

maj 17 09:53:14 anis systemd[1]: Starting MySQL Community Server...
-- Subject: Unit mysql.service has begun start-up
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit mysql.service has begun starting up.
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 audit[14767]: AVC apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/sys/devices/system/node/" pid=14767 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=124 ouid=0
maj 17 09:53:14 anis kernel: audit: type=1400 audit(1495007594.314:240): 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 kernel: audit: type=1400 audit(1495007594.314:241): apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/sys/devices/system/node/" pid=14767 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=124 ouid=0
maj 17 09:53:14 anis kernel: audit: type=1400 audit(1495007594.314:242): 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 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 audit[14767]: AVC apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/proc/14767/task/14767/mem" pid=14767 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=124 ouid=124
maj 17 09:53:14 anis kernel: audit: type=1400 audit(1495007594.658:243): apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/proc/14767/task/14767/mem" pid=14767 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=124 ouid=124
maj 17 09:53:14 anis systemd[1]: mysql.service: Main process exited, code=exited, status=2/INVALIDARGUMENT

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


6
Note aux futurs lecteurs: les messages refusés par l'apparmeur ne sont que des avertissements, et MySQL se termine probablement pour une raison différente - voir /var/log/mysql/error.log. MySQL devrait toujours pouvoir s'exécuter même s'il ne peut pas accéder aux fichiers / proc et / sys ci-dessus.
SystemParadox

Assurez-vous que votre disque n'est pas plein.
Buttle Butkus

Réponses:


31

Vous devez modifier la configuration de votre apparmor pour permettre à MySQL d'accéder à ces fichiers. Les messages du journal vous indiquent que vous avez /usr/sbin/mysqldbesoin d'un raccès en lecture ( ) pour ouvrir /proc/14767/status, /sys/devices/system/node/(barre oblique de fin 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 chacun):

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

(Notez la barre oblique de fin pour la deuxième ligne.)

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

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


6
Pourquoi faudrait-il modifier les apparmourparamètres manuellement pour installer mysql, si tel est le cas, il y a un problème.
George Udosen

2
J'accepte @George! Voici un rapport de tableau de bord avec d'autres partageant le même problème: bugs.launchpad.net/ubuntu/+source/mysql-5.7/+bug/1610765 (la plupart des commentateurs signalent les mêmes messages de journal qu'ici, bien que le journaliste d'origine en ait eu différents. )
Paul A Jungwirth

3
/proc/*/status rest inutilement ouvert. Apparmor a des apparieurs pour le prid actuel, vous pouvez donc le faire comme ceci: @{PROC}/@{pid}/status r, Vous pouvez également souhaiter un accès générique node*/meminfosi vous avez un support NUMA / plus d'un CPU exposé à la machine.
Martin Foot

3
Vous devrez peut-être également redémarrer l'apparmor après cela: sudo service apparmor restart
Zbyszek

1
il peut être judicieux de le mettre à la /etc/apparmor.d/local/user.sbin/mysqldplace pour éviter les conflits avec les mises à jour de profil par défaut. Il est déjà inclus dans le profil par défaut
Marat

6

Il peut s'agir de: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=739846 alors essayez d'utiliser

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

si cela n'aide pas à utiliser:

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

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


Merci pour la suggestion! Mon /etc/init.d/mysql a déjà exit 0à la fin. J'ai essayé de purger et de réinstaller mysql-server, ce qui n'a pas aidé. J'ai juste essayé de réinstaller (sans purger) mysql-common, ce qui n'a pas aidé non plus. La purger me demandera de désinstaller un grand nombre de paquets qui en dépendent, ce dont j'ai un peu peur.
Supernormal

Je viens de faire sudo apt remove --purge mysql-*pour supprimer complètement toutes les choses MySQL (j'ai la version 5.7), puis je l'ai fait sudo apt install akonadi-server mysql-client mysql-server, mais le résultat est toujours le même. Je reçois toujours le même message d'erreur et journalctl -xeindique un problème AppArmor comme ci-dessus.
Supernormal

1

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

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

Ajoutez ces lignes;

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

recharger le service apparmor

#sudo service apparmor reload

0

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 chose qui a fonctionné était:

  1. Courir sudo apt install mysql-server
  2. Inspectez l'erreur exacte ci-dessus
  3. Redémarrer
  4. Réexécutez sudo apt install mysql-serverpour poursuivre l'installation

Installation terminée.


D'accord, mais cela ne fonctionne toujours pas pour moi, malheureusement.
Supernormal

0
  1. stop mysql-server
  2. rm /var/lib/mysql/ib_logfile*
  3. restart mysql

1
Veuillez utiliser le balisage {}de code pour le code, il le rend plus lisible. Vous pouvez modifier votre réponse.
Robert Riedl

J'ai renommé mes ib_logfile*fichiers et l'ai fait apt upgrademais quand apt est arrivé à mysql, j'ai obtenu la sortie suivante mysql_upgrade: [ERROR] 1812: Tablespace is missing for table mysql.plugin
Supernormal

génial, j'ai essayé de le tarball d'abord, mysql a supprimé le tarball, maintenant il ne démarre pas pour une raison différente. Ubuntu 18.04. YMMV
Chaim Eliyah
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.