AppArmor 때문에 MySQL이 시작되지 않습니까?

AppArmor 때문에 MySQL이 시작되지 않습니까?

Kubuntu 16.04에 mysql-server-5.7을 설치하려고 하는데 문제가 발생했습니다.

sudo apt install mysql-server다음과 같은 출력을 제공합니다.

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)

그리고 실행하여 문제를 해결하려고 하면 journalctl -xe다음과 같은 출력이 표시됩니다. 이는 AppArmor가 문제를 일으키고 있음을 나타내는 것 같습니다.

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

이 문제를 해결하려면 어떻게 해야 합니까?

답변1

MySQL이 해당 파일에 액세스할 수 있도록 하려면 의류 구성을 편집해야 합니다. 로그 메시지는 , (디렉토리를 읽으려고 하기 때문에 후행 슬래시) 및 를 열 려면 /usr/sbin/mysqld읽기( ) 액세스가 필요하다는 것을 알려줍니다 . 편집할 파일은 .r/proc/14767/status/sys/devices/system/node//proc/14767/task/14767/mem/etc/apparmor.d/usr.sbin.mysqld

내 경우에는 다음 줄을 중간 어딘가에 추가하여 문제를 해결했습니다(각 줄 앞에 공백이 두 개 있음).

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

(두 번째 줄의 뒤에 슬래시가 표시됩니다.)

그런 다음 MySQL을 시작해 보세요. 오류가 더 많이 발생하면 해당 파일도 추가하고 다시 시도하세요.

여기이 문제에 대해 내가 다른 곳에서 제공한 답변입니다.

답변2

다음과 같을 수 있습니다. https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=739846 그러니 사용해 보세요

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

사용하는 데 도움이 되지 않는 경우:

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

mysql을 완전히 제거하고 다시 설치하려면 경고: 데이터베이스가 있으면 제거됩니다.

답변3

나는 이 문제를 다음과 같이 해결했습니다.

편집하다/etc/apparmor.d/local/usr.sbin.mysqld

다음 줄을 추가합니다.

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

의류 서비스 다시 로드

sudo service apparmor reload

답변4

내 경우에는 위의 답변을 사용한 후 Ubuntu 16.04에 mysql-server-5.7을 설치하려고 시도했을 때 효과가 있었던 것은 다음과 같습니다.

  1. 달리다sudo apt install mysql-server
  2. 위의 정확한 오류를 검사하십시오.
  3. 재부팅
  4. sudo apt install mysql-server설치를 계속하려면 다시 실행하세요 .

설치 완료.

관련 정보