44

I'm trying to install mysql-server-5.7 on Kubuntu 16.04, but I'm having trouble.

sudo apt install mysql-server gives the following output.

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)

And when trying to troubleshoot by running journalctl -xe I get output like the following, which seems to indicate that AppArmor is giving me trouble.

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

How could I go about solving this issue?

3
  • 11
    Note to future readers: the apparmor denied messages are just warnings, and MySQL is likely exiting for a different reason - see/var/log/mysql/error.log. MySQL should still be able to run even if it cannot access the above /proc and /sys files. Jan 30, 2018 at 16:00
  • 1
    Make sure your disk isn't full. Feb 22, 2019 at 10:03
  • 2
    For me, the error was due to an incorrect symlink for /var/lib/mysql. Reading /var/log/myql/error.log allowed me to find the real issue. @SystemParadox
    – Nyxynyx
    Jul 31, 2020 at 15:26

5 Answers 5

37

You need to edit your apparmor configuration to let MySQL access those files. The log messages are telling you that /usr/sbin/mysqld needs read (r) access to open /proc/14767/status, /sys/devices/system/node/ (trailing slash because it wants to read the directory), and /proc/14767/task/14767/mem. The file to edit is /etc/apparmor.d/usr.sbin.mysqld.

In my case I solved the problem by adding these lines somewhere in the middle (with two spaces in front of each):

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

(Note the trailing slash for the second line.)

After doing that, try starting MySQL, and if you get more errors, add those files too and try again.

Here is an answer I gave to this problem elsewhere.

9
  • 6
    Why would one need to edit the apparmour settings manually to install mysql, if that is the case then there's a problem. Sep 29, 2017 at 5:20
  • 3
    I agree @George ! Here is a launchpad report with others sharing the same issue: bugs.launchpad.net/ubuntu/+source/mysql-5.7/+bug/1610765 (Most commenters report the same log messages as here, although the original reporter had different ones.) Sep 29, 2017 at 13:48
  • 3
    /proc/*/status r is unnecessarily open. Apparmor has matchers for the current prid, so you can do it like this: @{PROC}/@{pid}/status r, You might also want to wildcard access to node*/meminfo if you have NUMA support / more than one CPU exposed to the machine. Feb 22, 2018 at 11:14
  • 6
    Also might need to restart apparmor after that: sudo service apparmor restart
    – Zbyszek
    Mar 7, 2018 at 12:59
  • 1
    it might make sense to put it into /etc/apparmor.d/local/user.sbin/mysqld instead to avoid clashing with default profile updates. It is already included in the default profile
    – Marat
    Apr 10, 2018 at 17:33
6

It may be this: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=739846 so try using

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

if it's not helping use:

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

to completly remove your mysql and reinstall Warning: If you have any databases they will be removed.

2
  • Thanks for the suggestion! My /etc/init.d/mysql already has exit 0 at the end. I have tried purging and reinstalling mysql-server, which didn't help. I just tried reinstalling (without purging) mysql-common, which also didn't help. Purging it will require me to uninstall a lot of packages that depend on it, which I am a bit scared of. May 18, 2017 at 12:44
  • I just did do sudo apt remove --purge mysql-* to completely remove all MySQL things (I have version 5.7), and then did sudo apt install akonadi-server mysql-client mysql-server, but the result is still the same. I still get the same error message and journalctl -xe indicates an AppArmor issue as above. Aug 9, 2017 at 6:50
5

I solved this issue with this:

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

Add the following lines:

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

reload apparmor service

sudo service apparmor reload
2
  1. stop mysql-server
  2. rm /var/lib/mysql/ib_logfile*
  3. restart mysql
4
  • 1
    Please use code markup {} for code, it makes it more readable. You can edit your answer. Feb 9, 2018 at 7:46
  • I renamed my ib_logfile* files and did apt upgrade but when apt got to mysql, I got the following output mysql_upgrade: [ERROR] 1812: Tablespace is missing for table mysql.plugin Feb 12, 2018 at 6:09
  • great, I tried to tarball it first, mysql removed the tarball, now it is failing to start for a different reason. Ubuntu 18.04. YMMV Oct 21, 2018 at 20:26
  • not all fails to start are the same. Deleting ib_logfile* is a sure way to loose data. Its a bad answer, particularly as it doesn't describe how its related to the question.
    – danblack
    Nov 16, 2023 at 1:10
0

In my case trying to install mysql-server-5.7 on Ubuntu 16.04 after using the above answers the on thing that worked was:

  1. Run sudo apt install mysql-server
  2. Inspect the above exact error
  3. Reboot
  4. Run sudo apt install mysql-server again to continue installation

Installation completed.

1
  • OK, but that still doesn't work for me, unfortunately. Dec 22, 2017 at 5:43

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .