MySQL startet wegen AppArmor nicht?

30

Ich versuche, mysql-server-5.7 auf Kubuntu 16.04 zu installieren, habe aber Probleme.

sudo apt install mysql-server gibt die folgende Ausgabe aus.

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)

Und wenn journalctl -xeich versuche, Fehler durch Ausführen zu beheben, erhalte ich eine Ausgabe wie die folgende, was darauf hinweist, dass AppArmor mir Probleme bereitet.

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

Wie könnte ich dieses Problem lösen?

Übernatürlich
quelle
6
Hinweis für zukünftige Leser: Die vom AppArmor abgelehnten Nachrichten sind nur Warnungen, und MySQL wird wahrscheinlich aus einem anderen Grund beendet - siehe /var/log/mysql/error.log. MySQL sollte weiterhin ausgeführt werden können, auch wenn es nicht auf die obigen Dateien / proc und / sys zugreifen kann.
SystemParadox
Stellen Sie sicher, dass Ihre Festplatte nicht voll ist.
Buttle Butkus

Antworten:

31

Sie müssen Ihre Apparmor-Konfiguration bearbeiten, damit MySQL auf diese Dateien zugreifen kann. In den Protokollnachrichten wird angegeben, dass /usr/sbin/mysqldread ( r) - Zugriff zum Öffnen erforderlich /proc/14767/statusist /sys/devices/system/node/(abschließender Schrägstrich, da das Verzeichnis gelesen werden soll), und /proc/14767/task/14767/mem. Die zu bearbeitende Datei lautet /etc/apparmor.d/usr.sbin.mysqld.

In meinem Fall habe ich das Problem gelöst, indem ich diese Zeilen irgendwo in der Mitte eingefügt habe (mit jeweils zwei Leerzeichen davor):

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

(Beachten Sie den abschließenden Schrägstrich für die zweite Zeile.)

Versuchen Sie anschließend, MySQL zu starten. Wenn weitere Fehler auftreten, fügen Sie auch diese Dateien hinzu und versuchen Sie es erneut.

Hier ist eine Antwort, die ich an anderer Stelle auf dieses Problem gegeben habe.

Paul A Jungwirth
quelle
6
Warum muss man die apparmourEinstellungen manuell bearbeiten , um sie zu installieren? mysqlWenn dies der Fall ist, liegt ein Problem vor.
George Udosen
2
Ich stimme @George zu! Hier ist ein Launchpad-Bericht mit anderen, die dasselbe Problem haben: bugs.launchpad.net/ubuntu/+source/mysql-5.7/+bug/1610765 (Die meisten Kommentatoren melden dieselben Protokollmeldungen wie hier, obwohl der ursprüngliche Reporter andere hatte. )
Paul A Jungwirth
3
/proc/*/status rist unnötig offen. Apparmor verfügt über Matcher für das aktuelle Prid, sodass Sie dies folgendermaßen tun können: @{PROC}/@{pid}/status r, Möglicherweise möchten Sie auch auf Wildcards zugreifen, node*/meminfowenn Sie NUMA-Unterstützung haben / mehr als eine CPU für den Computer verfügbar ist .
Martin Foot
3
Möglicherweise muss apparmor danach auch neu gestartet werden: sudo service apparmor restart
Zbyszek
1
Es kann sinnvoll sein, es /etc/apparmor.d/local/user.sbin/mysqldstattdessen zu verwenden, um Konflikte mit Standardprofilaktualisierungen zu vermeiden. Es ist bereits im Standardprofil enthalten
Marat
6

Möglicherweise: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=739846. Versuchen Sie es mit

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

wenn es nicht hilft:

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

um dein mysql komplett zu entfernen und neu zu installieren Warnung: Wenn du Datenbanken hast, werden diese entfernt.

ADDB
quelle
Danke für den Vorschlag! Mein /etc/init.d/mysql hat schon exit 0am Ende. Ich habe versucht, mysql-server zu bereinigen und neu zu installieren, was nicht geholfen hat. Ich habe gerade versucht, mysql-common neu zu installieren (ohne es zu löschen), was auch nicht geholfen hat. Wenn ich es lösche, muss ich viele Pakete deinstallieren, die davon abhängen, wovor ich ein bisschen Angst habe.
Supernormal
Ich habe gerade getan sudo apt remove --purge mysql-*, um alle MySQL-Dinge vollständig zu entfernen (ich habe Version 5.7), und dann getan sudo apt install akonadi-server mysql-client mysql-server, aber das Ergebnis ist immer noch das gleiche. Ich erhalte weiterhin dieselbe Fehlermeldung und journalctl -xezeige ein AppArmor-Problem wie oben an.
Supernormal
1

Ich habe dieses Problem damit gelöst.

Bearbeiten Sie /etc/apparmor.d/local/usr.sbin.mysqld

Fügen Sie diese Zeilen hinzu.

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

Apparmor-Dienst neu laden

#sudo service apparmor reload
Kadir Y.
quelle
0

In meinem Fall war der Versuch, mysql-server-5.7 unter Ubuntu 16.04 zu installieren, nachdem ich die obigen Antworten verwendet hatte:

  1. Lauf sudo apt install mysql-server
  2. Überprüfen Sie den obigen genauen Fehler
  3. Starten Sie neu
  4. Führen Sie den Vorgang sudo apt install mysql-servererneut aus, um die Installation fortzusetzen

Installation abgeschlossen.

viky_manoli
quelle
OK, aber das klappt bei mir leider immer noch nicht.
Supernormal
0
  1. stop mysql-server
  2. rm /var/lib/mysql/ib_logfile*
  3. restart mysql
jusme Mi
quelle
1
Bitte verwenden Sie Code Markup {}für Code, um die Lesbarkeit zu verbessern. Sie können Ihre Antwort bearbeiten.
Robert Riedl
Ich habe meine ib_logfile*Dateien umbenannt und habe apt upgrade, als apt zu mysql kam, die folgende Ausgabe bekommen mysql_upgrade: [ERROR] 1812: Tablespace is missing for table mysql.plugin
Supernormal
Toll, ich habe versucht, es zuerst zu tarballen. mysql hat das Tarball entfernt. Jetzt kann es aus einem anderen Grund nicht mehr gestartet werden. Ubuntu 18.04. YMMV
Chaim Eliyah