Скорее всего, проблема вызвана тем, что mysql / mariadb не имеет прав на запись в этот / external_data_dir
Решение в значительной степени зависит от используемой вами ОС.
Прежде всего, независимо от семейства Linux, убедитесь, что каталог существует и принадлежит пользователю mysql
:
mkdir /external_data_dir
chown -R mysql.mysql /external_data_dir
Теперь, если ваш Linux - RHEL / CentOS / Fedora, вам нужно будет проверить, включен ли SELinux, и если да, то вы либо отключите его (не рекомендуется), либо установите соответствующий контекст безопасности этого каталога (рекомендуемый подход)
# check if SELinux is enabled
getenforce
# if it outputs 'Enforcing' then SELinux is enabled
# set proper SELinux context
chcon -R -t mysqld_db_t /external_data_dir
# you could disable SELinux with the command below but it is not recommended
setenforce 0
Подробнее о SELinux и MySQL / MariaDB можно прочитать по этой ссылке: https://blogs.oracle.com/jsmyth/selinux-and-mysql
Если ваш Linux - Debian / Ubuntu, вам может потребоваться проверить настройки AppArmor, что является своего рода SELinux-эквивалентом. У меня нет опыта работы с AppArmor, но я могу только сказать, что он также может быть либо полностью отключен, либо правильно настроен для разрешения доступа mysql к нестандартному каталогу.
В качестве отправной точки вы можете проверить эту ссылку: https://blogs.oracle.com/jsmyth/apparmor-and-mysql
Вам понадобится доступ root / sudo для запуска всего вышеперечисленного.