AppArmor로 인해 MySQL이 시작되지 않습니까?


30

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

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


6
미래 독자들을위한 참고 사항 : Apparmor denied 메시지는 단지 경고 일 뿐이며 MySQL은 다른 이유로 종료 될 수 /var/log/mysql/error.log있습니다. 위의 / proc 및 / sys 파일에 액세스 할 수없는 경우에도 MySQL을 계속 실행할 수 있어야합니다.
SystemParadox

디스크가 꽉 차지 않았는지 확인하십시오.
Buttle Butkus

답변:


31

MySQL이 해당 파일에 액세스 할 수 있도록 apparmor 구성을 편집해야합니다. 로그 메시지는 당신을 말하고있다 /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을 시작하고 더 많은 오류가 발생하면 해당 파일도 추가하고 다시 시도하십시오.

여기 다른 곳 에서이 문제에 대한 답변이 있습니다.


6
apparmour설치하기 위해 설정을 수동으로 편집해야하는 이유는 무엇입니까? 그렇다면 mysql문제가있는 것입니다.
George Udosen

2
@George에 동의합니다! : 여기에 같은 문제를 공유하는 다른 사람들과 런치 패드 보고서입니다 bugs.launchpad.net/ubuntu/+source/mysql-5.7/+bug/1610765 원래 기자가 다른 사람을 가지고 있지만 (대부분의 댓글은 여기에 같은 로그 메시지를보고는. )
Paul A Jungwirth

3
/proc/*/status r불필요하게 열려 있습니다. Apparmor에는 현재 prid에 대한 matcher가 있으므로 다음과 같이 수행 할 @{PROC}/@{pid}/status r, 수 있습니다 node*/meminfo. 머신에 NUMA 지원 / 둘 이상의 CPU가 노출되어있는 경우 와일드 카드 액세스를 원할 수도 있습니다 .
Martin Foot

3
또한 그 후 AppArmor의 다시 시작해야 할 수 있습니다 : sudo service apparmor restart
Zbyszek

1
/etc/apparmor.d/local/user.sbin/mysqld기본 프로필 업데이트와 충돌을 피하기 위해 대신 넣는 것이 좋습니다. 기본 프로필에 이미 포함되어 있습니다
Marat

6

그것은이있을 수 있습니다 : 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을 완전히 제거하고 다시 설치하는 방법 경고 : 데이터베이스가 있으면 제거됩니다.


제안 해 주셔서 감사합니다! 내 /etc/init.d/mysql은 이미 exit 0끝났습니다. mysql-server를 제거하고 다시 설치하려고 시도했지만 도움이되지 않았습니다. 방금 mysql-common을 제거하지 않고 다시 시도했지만 도움이되지 않았습니다. 그것을 제거하려면 그것에 의존하는 많은 패키지를 제거해야합니다.
Supernormal

방금 sudo apt remove --purge mysql-*모든 MySQL 항목을 완전히 제거하고 (버전 5.7이 있음) 수행 sudo apt install akonadi-server mysql-client mysql-server했지만 결과는 여전히 동일합니다. 여전히 같은 오류 메시지 journalctl -xe가 나타나고 위와 같이 AppArmor 문제가 있음을 나타냅니다.
Supernormal

1

이 문제를 해결했습니다.

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

이 줄을 추가하십시오;

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

의류 서비스 재 장전

#sudo service apparmor reload

0

필자의 경우 위의 사용 후 Ubuntu 16.04에 mysql-server-5.7을 설치하려고하면 작동 한 것이 다음과 같습니다.

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

설치 완료.


알았지 만 불행히도 여전히 작동하지 않습니다.
Supernormal

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

1
코드에 코드 마크 업 {}을 사용하면 더 읽기 쉽습니다. 답변을 편집 할 수 있습니다.
Robert Riedl

내 이름 ib_logfile*파일과 않았다 apt upgrade하지만 MySQL의에 도착했을 때 APT, 나는 다음과 같은 출력을 가지고 mysql_upgrade: [ERROR] 1812: Tablespace is missing for table mysql.plugin
비범

위대한, 나는 그것을 먼저 tarball하려고했지만, mysql은 tarball을 제거했는데, 이제는 다른 이유로 시작하지 못했습니다. 우분투 18.04. YMMV
Chaim Eliyah
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.