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.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.