Короче говоря, (особенно на RHEL / CentOS / Fedora) попробуйте
getenforce
, если он отвечает Enforcing
, у вас запущен SELinux.Временно деактивируйте его с помощью setenforce 0
и посмотрите, запускается ли сейчас MariaDB!Довольно часто, особенно в RHEL / CentOS / Fedora.
Более подробно об этом рассказано ниже, а также в этой официальной статье .
В общем
В среде UNIX существует больше вещей, которые могут препятствовать доступу к файлам, чем просто права доступа пользователя.
- Модули безопасности, такие как SELinux (см. Выше) или AppArmor (как упоминал Дэн), могут запретить его
- Списки контроля доступа (ACL) могут быть специально установлены для необходимых файлов / каталогов
- Любая из родительских папок может принадлежать другому пользователю, и x (= "dir access") не может быть установлен для других
Кроме того, могут быть и другие неожиданные факторы, такие как...
- mysql
datadir
устанавливается на место, где mysql не имеет разрешений (см. /etc/my.cnf
) - Mysql может (как ни странно) работать какдругой пользователь, или файл может просто принадлежать кому-то другому
Просто упомянуть о том, что у меня на уме, но не стесняйтесь редактировать / добавлять к этому ответу кстати).
В этом случае SELinux - это «проблема»
В качестве постоянного решения вы можете попытаться восстановить соответствующий контекст безопасности, ...
restorecon -R /var/lib/mysql/
...или просто отключите SELinux (но подумайте об этом, прежде чем делатьЭто так), отредактировав конфигурацию (обычно в /etc/selinux/config
) и установив SELINUX=disabled
, как предложено в следующей статье.
Очевидно,они применимы к MySQL точно так же.