trying to configure apparmor for mariadb
14:18 06 Oct 2026

I have kubuntu 26.04 & I'm trying to configure mariadb_multi/mysqld_multi. I've been running into issues with apparmor due to trying to install into a non-standard directory. My main partition is very small, and I have a separate 2TB drive/partition that I'm trying to install a few instances of mariadb to.

I created these folders:

/media/Crucial2TB/mariadb1
/media/Crucial2TB/mariadb2

and set them to mysql:mysql and 775 permissions.

When I tried to install mariadb into those directories using this command:

sudo /usr/bin/mariadb-install-db --defaults-file=/etc/mysql/mariadb.cnf --datadir=/media/Crucial2TB/mariadb1/ --verbose --user=mysql

I got permissions errors. After some investigation with sudo dmesg I found that apparmor was blocking it. I then added these lines to /etc/apparmor.d/mariadbd:

/media/Crucial2TB/mariadb1/ r,
  /media/Crucial2TB/mariadb1/** rwk,
  /media/Crucial2TB/mariadb1/linuxserver.pid1 rw,
  /media/Crucial2TB/mariadb1/linuxserver.sock rw,
  /media/Crucial2TB/mariadb1/linuxserver.sock.lock rw,

  /media/Crucial2TB/mariadb2/ r,
  /media/Crucial2TB/mariadb2/** rwk,
  /media/Crucial2TB/mariadb2/linuxserver.pid1 rw,
  /media/Crucial2TB/mariadb2/linuxserver.sock rw,
  /media/Crucial2TB/mariadb2/linuxserver.sock.lock rw,

  /var/run/mysqld/ rw,

and I un-commented these lines in the same file:

# Should not be necessary according to Daniel Black:
  capability dac_override,
  #capability dac_read_search,
  # Should not be necessary as mariadbd does not run as root:
  capability setuid,
  capability setgid,

the mariadb.cnf file I created based on the output from running the command:

mysqld_multi --example
[mysqld]
# This file should probably be in your home dir (~/.my.cnf)
           # or /etc/my.cnf
           # Version 2.1 by Jani Tolonen
           [mysqld-multi]
           mariadbd   = /usr/bin/mariadbd-safe
           mysqladmin = /usr/bin/mysqladmin
           user       = multi_admin
           password   = *******
           [mysqld1]
           socket     = /var/run/mysqld/mysql.sock1
           port       = 3306
           pid-file   = /media/Crucial2TB/mariadb1/linuxserver.pid1
           datadir    = /media/Crucial2TB/mariadb1
           #language   = /usr/local/share/mysql/english
           user       = mysql
           tmpdir     = /tmp
           log-error = /var/log/mysql/mysqld1.log
           [mysqld2]
           socket     = /var/run/mysqld/mysql.sock2
           port       = 3307
           pid-file   = /media/Crucial2TB/mariadb2/linuxserver.pid2
           datadir    = /media/Crucial2TB/mariadb2
           #language   = /usr/local/share/mysql/english
           user       = mysql
           log-error = /var/log/mysql/mysqld2.log

I created the multi_admin user and added it to the mysql group.

After these changes I can now run:

sudo mariadbd-multi --defaults-file=/etc/mysql/mariadb.cnf start 1,2

and it "starts" with no errors displayed, but if I run

$ sudo mariadbd-multi --defaults-file=/etc/mysql/mariadb.cnf report 1,2
Reporting MariaDB servers
MariaDB server from group: mysqld1 is not running
MariaDB server from group: mysqld2 is not running

they aren't actually running. Also, I checked with netstat to verify:

$ netstat -tln | grep -E '3306|3307'
tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN     
tcp6       0      0 :::3306                 :::*                    LISTEN 

It's only listening on 3306, but it should be 3306 and 3307.

In the /var/log/mysql/mysqld1.log I see this even though this file is specifically allowed with "rw" in the apparmor file:

2026-10-06 13:27:15 0 [ERROR] mariadbd: Can't create/write to file '/media/Crucial2TB/mariadb1/linuxserver.pid1' (Errcode: 13 "Permission denied") 
2026-10-06 13:27:15 0 [ERROR] Can't start server: can't create PID file: Permission denied

sudo dmesg shows this:

[444815.355144] audit: type=1400 audit(1791313697.467:17531): apparmor="DENIED" operation="open" class="file" profile="mariadbd" name="/sys/devices/pci0000:00/0000:00:1f.2/ata6/host5/target5:0:0/5:0:0:0/block/sdd/dev" pid=734797 comm="mariadbd" requested_mask="r" denied_mask="r" fsuid=975 ouid=0
[444815.355172] audit: type=1400 audit(1791313697.467:17532): apparmor="DENIED" operation="open" class="file" profile="mariadbd" name="/sys/devices/pci0000:00/0000:00:1f.2/ata2/host1/target1:0:0/1:0:0:0/block/sdb/dev" pid=734797 comm="mariadbd" requested_mask="r" denied_mask="r" fsuid=975 ouid=0
[444815.355382] audit: type=1400 audit(1791313697.467:17533): apparmor="DENIED" operation="open" class="file" profile="mariadbd" name="/sys/devices/pci0000:00/0000:00:1f.2/ata5/host4/target4:0:0/4:0:0:0/block/sdc/dev" pid=734797 comm="mariadbd" requested_mask="r" denied_mask="r" fsuid=975 ouid=0
[444815.355451] audit: type=1400 audit(1791313697.467:17534): apparmor="DENIED" operation="open" class="file" profile="mariadbd" name="/sys/devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0/block/sda/dev" pid=734797 comm="mariadbd" requested_mask="r" denied_mask="r" fsuid=975 ouid=0
[444815.355518] audit: type=1400 audit(1791313697.467:17535): apparmor="DENIED" operation="open" class="file" profile="mariadbd" name="/sys/devices/pci0000:00/0000:00:1f.2/ata6/host5/target5:0:0/5:0:0:0/block/sdd/dev" pid=734794 comm="mariadbd" requested_mask="r" denied_mask="r" fsuid=975 ouid=0
[444815.355568] audit: type=1400 audit(1791313697.467:17536): apparmor="DENIED" operation="open" class="file" profile="mariadbd" name="/sys/devices/pci0000:00/0000:00:1f.2/ata2/host1/target1:0:0/1:0:0:0/block/sdb/dev" pid=734794 comm="mariadbd" requested_mask="r" denied_mask="r" fsuid=975 ouid=0
[444815.355740] audit: type=1400 audit(1791313697.467:17537): apparmor="DENIED" operation="open" class="file" profile="mariadbd" name="/sys/devices/pci0000:00/0000:00:1f.2/ata5/host4/target4:0:0/4:0:0:0/block/sdc/dev" pid=734794 comm="mariadbd" requested_mask="r" denied_mask="r" fsuid=975 ouid=0
[444815.355787] audit: type=1400 audit(1791313697.467:17538): apparmor="DENIED" operation="open" class="file" profile="mariadbd" name="/sys/devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0/block/sda/dev" pid=734794 comm="mariadbd" requested_mask="r" denied_mask="r" fsuid=975 ouid=0

I think this is what's now blocking it, but I don't know what all these "/sys/devices/pci0000:00/0000:00:1f.2/ata6/host5/target5:0:0/5:0:0:0/block/sdd/dev" are, or how to allow them.

ubuntu mariadb apparmor mysqld-multi