MySQL AppArmor yüzünden başlamaz?


30

Mysql-server-5.7'yi Kubuntu 16.04'e yüklemeye çalışıyorum, ancak sorun yaşıyorum.

sudo apt install mysql-server aşağıdaki çıktıyı verir.

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)

Ve çalıştırarak sorun gidermeye çalışırken journalctl -xeaşağıdaki gibi çıktılar alıyorum, bu da AppArmor'un bana sorun çıkardığını gösteriyor.

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

Bu sorunu nasıl çözebilirim?


6
Gelecekteki okuyuculara not: apparmor reddedilen mesajlar sadece uyarılardır ve MySQL muhtemelen farklı bir nedenden dolayı çıkmaktadır - bkz /var/log/mysql/error.log. MySQL, yukarıdaki / proc ve / sys dosyalarına erişemese bile çalışabilmelidir.
SystemParadox

Diskin dolu olmadığından emin olun.
Buttle Butkus

Yanıtlar:


31

MySQL'in bu dosyalara erişebilmesi için apparmor yapılandırmanızı düzenlemeniz gerekir. İşlem kaydı mesajları size açık /usr/sbin/mysqld(okuma rerişimi) /proc/14767/status, /sys/devices/system/node/(dizini okumak istediği için sondaki eğik çizgi) ve /proc/14767/task/14767/mem. Düzenlenecek dosya /etc/apparmor.d/usr.sbin.mysqld.

Benim durumumda bu satırları ortada bir yere ekleyerek sorunu çözdüm (her birinin önünde iki boşluk olacak şekilde):

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

(İkinci satırın sonundaki eğik çizgiyi not edin.)

Bunu yaptıktan sonra, MySQL'i başlatmayı deneyin ve daha fazla hata alırsanız, bu dosyaları da ekleyin ve tekrar deneyin.

İşte bu soruna başka bir yerde verdiğim bir cevap.


6
Neden bir tane yüklemek için apparmourayarları el ile düzenlemeniz gerekiyor mysql?
George Udosen

2
@George'a katılıyorum! İşte aynı sorunu paylaşan başkalarıyla birlikte başlatılan bir rapora ait rapor : bugs.launchpad.net/ubuntu/+source/mysql-5.7/+bug/1610765 (Çoğu yorum yapan kişi, orijinal muhabirin farklı olmasına rağmen, aynı günlük mesajlarını burada bildirir. )
Paul A Jungwirth

3
/proc/*/status rgereksiz yere açık. Apparmor'un şu anki grup için eşleştiricileri var, bu nedenle bunu yapabilirsiniz: Makineye NUMA desteği varsa veya birden fazla CPU'ya sahipseniz, @{PROC}/@{pid}/status r, joker karakter erişimini de isteyebilirsiniz node*/meminfo.
Martin Foot

3
Ayrıca bundan sonra apparmor'u yeniden başlatmanız gerekebilir:sudo service apparmor restart
Zbyszek

1
/etc/apparmor.d/local/user.sbin/mysqldvarsayılan profil güncellemeleriyle çakışmamak için yerine koymak mantıklı olabilir . Varsayılan profilde zaten var
Marat

6

Bu olabilir: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=739846 bu yüzden kullanmayı deneyin

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

kullanımına yardımcı değilse:

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

MySQL'inizi tamamen kaldırmak ve yeniden yüklemek için Uyarı: Herhangi bir veritabanınız varsa, bunlar kaldırılacaktır.


Önerin için teşekkürler! Benim /etc/init.d/mysql exit 0sonunda zaten var . Ben yardım etmedi mysql-server temizleme ve yeniden denedim. Sadece (temizleme olmadan) yeniden denedim mysql-ortak, aynı zamanda yardımcı olmadı. Tasfiye etmek, biraz korktuğum, ona bağlı bir sürü paketi kaldırmamı gerektirecek.
Supernormal

sudo apt remove --purge mysql-*Tüm MySQL şeylerini tamamen kaldırmak için yaptım (5.7 sürümüne sahibim) ve sonra yaptım sudo apt install akonadi-server mysql-client mysql-server, ancak sonuç hala aynı. Yine aynı hata iletisini alıyorum ve journalctl -xeyukarıdaki gibi bir AppArmor sorunu olduğunu belirtiyorum.
Supernormal

1

Bu konuyu bununla çözdüm;

/Etc/apparmor.d/local/usr.sbin.mysqld dosyasını düzenleyin

Bu satırları ekleyin;

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

apparmor hizmetini yeniden yükle

#sudo service apparmor reload

0

Benim durumumda yukarıdaki cevapları kullandıktan sonra Ubuntu 16.04'e mysql-server-5.7'yi yüklemeye çalışıyorum, işe yarayan şey şuydu:

  1. Koşmak sudo apt install mysql-server
  2. Yukarıdaki hatayı inceleyin
  3. Yeniden Başlatma
  4. sudo apt install mysql-serverKuruluma devam etmek için tekrar çalıştırın

Yükleme tamamlandı.


Tamam, ama bu hala maalesef benim için çalışmıyor.
Olağanüstü

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

1
Lütfen kod {}için kod işaretlemesini kullanın , daha okunaklı hale getirir. Cevabınızı düzenleyebilirsiniz.
Robert Riedl

ib_logfile*Dosyalarımı yeniden adlandırdım ve yaptım apt upgradeama apt mysql_upgrade: [ERROR] 1812: Tablespace is missing for table mysql.plugin
mysql'e

harika, önce tarball yapmaya çalıştım, mysql tarball'ı çıkardı, şimdi farklı bir nedenden dolayı başlayamıyor. Ubuntu 18.04. YMMV
Chaim Eliyah
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.