CentOS 7 – SELINUX OFF – permissions OK – thesql cannot be run from /home -error 13 – but everywhere else it can

centosMySQL

Running CentOS 7 with SE Linux disabled;

# sestatus
SELinux status:                 disabled

mysql config file;

[mysqld]
datadir=/home/mysql-data
socket=/home/mysql-data/mysql.sock

permissions on datadir;

 home]# ls -la
 drwxr-xr-x   3 root  root   24 Aug 10 12:22 .
 dr-xr-xr-x. 18 root  root  256 Aug 10 12:34 ..
 drwxr-xr-x   5 mysql mysql 207 Aug 10 13:32 mysql-data

within mysql-data;

mysql-data]# ls -la

total 110636
drwxr-xr-x 5 mysql mysql      207 Aug 10 13:32 .
drwxr-xr-x 3 root  root        24 Aug 10 12:22 ..
-rw-rw---- 1 mysql mysql    16384 Aug 10 13:32 aria_log.00000001
-rw-rw---- 1 mysql mysql       52 Aug 10 13:32 aria_log_control
drwx------ 2 mysql mysql       20 Aug  9 09:22 db1
-rw-rw---- 1 mysql mysql 12582912 Aug 10 13:32 ibdata1
-rw-rw---- 1 mysql mysql 50331648 Aug 10 13:32 ib_logfile0
-rw-rw---- 1 mysql mysql 50331648 Aug  8 20:33 ib_logfile1
-rw-rw---- 1 mysql mysql        0 Aug  8 20:39 multi-master.info
 drwx--x--x 2 mysql mysql     4096 Aug  8 20:33 mysql
 drwx------ 2 mysql mysql       20 Aug  8 20:33 performance_schema
-rw-rw---- 1 mysql mysql    17890 Aug  8 21:24 server_audit.log

error when running start command;

#service mysql start
Starting mysql (via systemctl):  Job for mariadb.service failed because 
the control process exited with error code. See "systemctl status 
mariadb.service" and "journalctl -xe" for details.
                                                       [FAILED]

error;

Starting MariaDB database server...
Aug 10 13:46:47 xxxxx mysqld: 2017-08-10 13:46:47 140520315873536 [Note] 
/usr/sbin/mysqld (mysqld 10.1.25-MariaDB) starting as process 5998 ...
Aug 10 13:46:47 xxxxx mysqld: 2017-08-10 13:46:47 140520315873536 
[Warning] Can't create test file /home/mysql-data/xxxxx.lower-test
**Aug 10 13:46:47 xxxxx mysqld: #007/usr/sbin/mysqld: Can't change dir to 
'/home/mysql-data/' (Errcode: 13 "Permission denied")**
Aug 10 13:46:47 xxxxx mysqld: 2017-08-10 13:46:47 140520315873536 [ERROR] 
Aborting
Aug 10 13:46:47 xxxxx systemd: mariadb.service: main process exited, 
code=exited, status=1/FAILURE
Aug 10 13:46:47 xxxxx systemd: Failed to start MariaDB database server.
Aug 10 13:46:47 xxxxx systemd: Unit mariadb.service entered failed state.
Aug 10 13:46:47 xxxxx systemd: mariadb.service failed.

Whenever I move this away from /home/mysql-data to something like /data/mysql-data including the socket, there are no issues!
for some reason only /home is giving this issue!

/home/mysql-data is writable even when sudoing as 'mysql' ;

sudo -u mysql touch /home/mysql-data/xxxx.lower-test

total 110636
drwxr-xr-x 5 mysql mysql      219 Aug 10 14:04 .
drwxr-xr-x 3 root  root        24 Aug 10 12:22 ..
-rw-rw---- 1 mysql mysql    16384 Aug 10 13:32 aria_log.00000001
-rw-rw---- 1 mysql mysql       52 Aug 10 13:32 aria_log_control
drwx------ 2 mysql mysql       20 Aug  9 09:22 db1
-rw-rw---- 1 mysql mysql 12582912 Aug 10 13:32 ibdata1
-rw-rw---- 1 mysql mysql 50331648 Aug 10 13:32 ib_logfile0
-rw-rw---- 1 mysql mysql 50331648 Aug  8 20:33 ib_logfile1
-rw-rw---- 1 mysql mysql        0 Aug  8 20:39 multi-master.info
drwx--x--x 2 mysql mysql     4096 Aug  8 20:33 mysql
drwx------ 2 mysql mysql       20 Aug  8 20:33 performance_schema
-rw-rw---- 1 mysql mysql    17890 Aug  8 21:24 server_audit.log
-rw-r--r-- 1 mysql mysql        0 Aug 10 14:04 test

The only difference with /home that I can see is that is on it's own mount;

df -mh
Filesystem           Size  Used Avail Use% Mounted on
/dev/mapper/cl-root   50G  2.6G   48G   6% /
devtmpfs              32G     0   32G   0% /dev
tmpfs                 32G     0   32G   0% /dev/shm
tmpfs                 32G  8.4M   32G   1% /run
tmpfs                 32G     0   32G   0% /sys/fs/cgroup
/dev/sda1           1014M  184M  831M  19% /boot
/dev/mapper/cl-home  180G  142M  180G   1% /home
tmpfs                6.3G     0  6.3G   0% /run/user/0

Has anyone seen this?

UPDATE/EDIT:
as soon as I changed the /etc/fstab file from

/dev/mapper/cl-home  180G  142M  180G   1% /home

to

/dev/mapper/cl-home  180G  142M  180G   1% /data

MySQL ran fine. (after editing my.cnf to point to /data/mysql-data)

What is it about /home that Mysql or Centos doesn't like?
Again, selinux was disabled, and I didn't change any permissions or structure when changing from /home to /data on the mount.

never seen this before.

Best Answer

That's because the systemctl's mariadb.service has a line says ProtectHome=true.