¿MySQL no se iniciará debido a AppArmor?


30

Estoy tratando de instalar mysql-server-5.7 en Kubuntu 16.04, pero tengo problemas.

sudo apt install mysql-server da el siguiente resultado.

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)

Y cuando intento solucionar problemas ejecutando journalctl -xe, obtengo resultados como el siguiente, lo que parece indicar que AppArmor me está dando problemas.

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

¿Cómo podría resolver este problema?


66
Nota para futuros lectores: los mensajes denegados por el Apaparmor son solo advertencias, y es probable que MySQL salga por una razón diferente, vea /var/log/mysql/error.log. MySQL debería poder ejecutarse incluso si no puede acceder a los archivos / proc y / sys anteriores.
SystemParadox

Asegúrese de que su disco no esté lleno.
Buttle Butkus

Respuestas:


31

Necesita editar su configuración de apparmor para permitir que MySQL acceda a esos archivos. Los mensajes de registro le indican que /usr/sbin/mysqldnecesita racceso de lectura ( ) para abrir /proc/14767/status, /sys/devices/system/node/(barra diagonal final porque quiere leer el directorio) y /proc/14767/task/14767/mem. El archivo a editar es /etc/apparmor.d/usr.sbin.mysqld.

En mi caso, resolví el problema agregando estas líneas en algún lugar en el medio (con dos espacios en frente de cada una):

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

(Tenga en cuenta la barra inclinada final para la segunda línea).

Después de hacer eso, intente iniciar MySQL, y si obtiene más errores, agregue esos archivos también e intente nuevamente.

Aquí hay una respuesta que le di a este problema en otra parte.


66
¿Por qué habría que editar la apparmourconfiguración manualmente para instalarla? mysqlSi ese es el caso, entonces hay un problema.
George Udosen

2
Estoy de acuerdo @George! Aquí hay un informe de launchpad con otros que comparten el mismo problema: bugs.launchpad.net/ubuntu/+source/mysql-5.7/+bug/1610765 (La mayoría de los comentaristas informan los mismos mensajes de registro que aquí, aunque el reportero original tenía otros diferentes. )
Paul A Jungwirth

3
/proc/*/status rEstá innecesariamente abierto. Apparmor tiene coincidencias para el prid actual, por lo que puede hacerlo así: @{PROC}/@{pid}/status r, es posible que también desee acceder a comodines node*/meminfosi tiene soporte NUMA / más de una CPU expuesta a la máquina.
Martin Foot

3
También es posible que deba reiniciar la aparición después de eso: sudo service apparmor restart
Zbyszek

1
podría tener sentido ponerlo en su /etc/apparmor.d/local/user.sbin/mysqldlugar para evitar chocar con las actualizaciones de perfil predeterminadas. Ya está incluido en el perfil predeterminado
Marat

6

Puede ser esto: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=739846, así que intente usar

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

si no está ayudando a usar:

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

para eliminar completamente su mysql y reinstalar Advertencia: si tiene alguna base de datos, se eliminarán.


¡Gracias por la sugerencia! Mi /etc/init.d/mysql ya tiene exit 0al final. He intentado purgar y reinstalar mysql-server, lo que no me ayudó. Acabo de intentar reinstalar (sin purgar) mysql-common, que tampoco ayudó. Purgarlo requerirá que desinstale muchos paquetes que dependen de él, lo cual me da un poco de miedo.
Supernormal

Simplemente hice sudo apt remove --purge mysql-*para eliminar completamente todas las cosas de MySQL (tengo la versión 5.7), y luego lo hice sudo apt install akonadi-server mysql-client mysql-server, pero el resultado sigue siendo el mismo. Todavía recibo el mismo mensaje de error e journalctl -xeindica un problema de AppArmor como el anterior.
Supernormal el

1

Resolví este problema con esto;

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

Agrega estas líneas;

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

recargar el servicio de aparmor

#sudo service apparmor reload

0

En mi caso, tratando de instalar mysql-server-5.7 en Ubuntu 16.04 después de usar las respuestas anteriores, lo que funcionó fue:

  1. correr sudo apt install mysql-server
  2. Inspeccione el error exacto anterior
  3. Reiniciar
  4. Ejecutar sudo apt install mysql-servernuevamente para continuar la instalación

Instalación completa.


OK, pero eso todavía no funciona para mí, desafortunadamente.
Supernormal

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

1
Utilice el marcado {}de código para el código, lo hace más legible. Puedes editar tu respuesta.
Robert Riedl

ib_logfile*apt upgrademysql_upgrade: [ERROR] 1812: Tablespace is missing for table mysql.plugin
Cambié el

genial, intenté tarball primero, mysql eliminó el tarball, ahora no puede comenzar por una razón diferente. Ubuntu 18.04. YMMV
Chaim Eliyah
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.