MySQL tidak akan memulai karena AppArmor?


30

Saya mencoba menginstal mysql-server-5.7 di Kubuntu 16.04, tetapi saya mengalami masalah.

sudo apt install mysql-server memberikan hasil sebagai berikut.

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)

Dan ketika mencoba memecahkan masalah dengan menjalankan, journalctl -xesaya mendapatkan output seperti berikut, yang tampaknya menunjukkan bahwa AppArmor memberi saya masalah.

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

Bagaimana saya bisa menyelesaikan masalah ini?


6
Catatan untuk pembaca di masa mendatang: pesan yang ditolak aparatur hanya peringatan, dan MySQL kemungkinan keluar karena alasan yang berbeda - lihat /var/log/mysql/error.log. MySQL harus tetap dapat berjalan walaupun tidak dapat mengakses file / proc dan / sys di atas.
SystemParadox

Pastikan disk Anda tidak penuh.
Buttle Butkus

Jawaban:


31

Anda perlu mengedit konfigurasi apparmor Anda untuk membiarkan MySQL mengakses file-file itu. Pesan log memberitahu Anda bahwa /usr/sbin/mysqldperlu membaca ( r) akses untuk membuka /proc/14767/status, /sys/devices/system/node/(mengikuti garis miring karena ingin membaca direktori), dan /proc/14767/task/14767/mem. File yang akan diedit adalah /etc/apparmor.d/usr.sbin.mysqld.

Dalam kasus saya, saya memecahkan masalah dengan menambahkan garis-garis ini di suatu tempat di tengah (dengan dua spasi di depan masing-masing):

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

(Perhatikan garis miring untuk baris kedua.)

Setelah melakukan itu, coba mulai MySQL, dan jika Anda mendapatkan lebih banyak kesalahan, tambahkan file-file itu juga dan coba lagi.

Inilah jawaban yang saya berikan untuk masalah ini di tempat lain.


6
Mengapa seseorang perlu mengedit apparmourpengaturan secara manual untuk menginstal mysql, jika itu masalahnya maka ada masalah.
George Udosen

2
Saya setuju @George! Berikut ini adalah laporan launchpad dengan orang lain yang berbagi masalah yang sama: bugs.launchpad.net/ubuntu/+source/mysql-5.7/+bug/1610765 (Kebanyakan komentator melaporkan pesan log yang sama seperti di sini, meskipun reporter aslinya memiliki yang berbeda. )
Paul A Jungwirth

3
/proc/*/status rtidak perlu terbuka. Apparmor memiliki pencocokan untuk harga saat ini, sehingga Anda dapat melakukannya seperti ini: @{PROC}/@{pid}/status r, Anda juga mungkin ingin wildcard akses node*/meminfojika Anda memiliki dukungan NUMA / lebih dari satu CPU yang terpapar ke mesin.
Martin Foot

3
Mungkin juga perlu me-restart apparmor setelah itu: sudo service apparmor restart
Zbyszek

1
mungkin masuk akal untuk memasukkannya ke dalam /etc/apparmor.d/local/user.sbin/mysqlduntuk menghindari bentrok dengan pembaruan profil default. Itu sudah termasuk dalam profil default
Marat

6

Mungkin ini: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=739846 jadi coba gunakan

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

jika tidak membantu gunakan:

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

untuk menghapus mysql Anda sepenuhnya dan menginstal ulang Peringatan: Jika Anda memiliki database mereka akan dihapus.


Terima kasih untuk sarannya! /Etc/init.d/mysql saya sudah ada exit 0di akhir. Saya telah mencoba membersihkan dan menginstal ulang mysql-server, yang tidak membantu. Saya baru saja mencoba menginstal ulang (tanpa membersihkan) mysql-common, yang juga tidak membantu. Membersihkannya akan mengharuskan saya untuk menghapus banyak paket yang bergantung padanya, yang agak saya takuti.
Supernormal

Saya hanya melakukan sudo apt remove --purge mysql-*untuk menghapus semua hal MySQL (saya memiliki versi 5.7), dan kemudian melakukannya sudo apt install akonadi-server mysql-client mysql-server, tetapi hasilnya masih sama. Saya masih mendapatkan pesan kesalahan yang sama dan journalctl -xemenunjukkan masalah AppArmor seperti di atas.
Supernormal

1

Saya memecahkan masalah ini dengan ini;

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

Tambahkan baris ini;

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

memuat kembali layanan apparmor

#sudo service apparmor reload

0

Dalam kasus saya mencoba menginstal mysql-server-5.7 di Ubuntu 16.04 setelah menggunakan jawaban di atas, hal yang berhasil adalah:

  1. Menjalankan sudo apt install mysql-server
  2. Periksa kesalahan pasti di atas
  3. Mulai ulang
  4. Jalankan sudo apt install mysql-serverlagi untuk melanjutkan instalasi

Instalasi selesai.


Oke, tapi itu masih tidak berhasil untukku, sayangnya.
Supernormal

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

1
Silakan gunakan markup kode {}untuk kode, itu membuatnya lebih mudah dibaca. Anda dapat mengedit jawaban Anda.
Robert Riedl

Saya mengganti nama ib_logfile*file saya dan melakukannya apt upgradetetapi ketika saya kembali ke mysql, saya mendapatkan output berikut mysql_upgrade: [ERROR] 1812: Tablespace is missing for table mysql.plugin
Supernormal

hebat, saya mencoba tarball dulu, mysql menghapus tarball, sekarang gagal memulai karena alasan yang berbeda. Ubuntu 18.04. YMMV
Chaim Eliyah
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.