Назад | Перейти на главную страницу

Невозможно изменить каталог данных для MariaDB Centos7.6

У меня есть свежая установка Centos 7.6, которая включает стандартную схему разделов для установки Centos 7.6. Что включает в себя раздел каталога «/» размером 50 ГБ. Я хотел бы переместить каталог данных nysql (mariadb) по умолчанию, чтобы не заполнять корневой раздел большой базой данных. Я хочу переместить каталог в каталог в домашнем каталоге пользователя. MariaDB не запускается после изменений, и я не понимаю причину, основанную на сообщении об ошибке.

Я пробовал следовать инструкциям:

# Check the current data-dir
mysql -u root -p
MariaDB [(none)]> select @@datadir;

# Edit the my.cnf file and change:
[mysqld]
datadir=/home/development/mysql
socket=/home/development/mysql/mysql.sock
[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid
!includedir /etc/my.cnf.d
[client]
port=3306
socket=/home/development/mysql/mysql.sock


# Restart MariaDB
systemectl start mariadb

MariaDB не запускается, и выводится следующее.

Dec 10 12:19:52 localhost.localdomain mariadb-prepare-db-dir[24554]: Database MariaDB is not initialized, but the directory /home/development/mysql is not empty, so initialization cannot be done.
Dec 10 12:19:52 localhost.localdomain mariadb-prepare-db-dir[24554]: Make sure the /home/development/mysql is empty before running mariadb-prepare-db-dir.

Рассматриваемый каталог фактически пуст. Права доступа к папке - mysql: mysql.

Кроме того, я полностью отключил SELinux с помощью:

setenforce 0

Вот вывод разрешений на домашний каталог:

$ ls -haltr /home
total 4.0K
drwxr-xr-x.  3 root        root          25 Dec 10 15:41 .
dr-xr-xr-x. 17 root        root         242 Dec 10 15:59 ..
drwx------. 19 development development 4.0K Dec 10 18:00 development

$ ls -haltr /home/development/mysql
total 29M
drwx------.  2 mysql       mysql       4.0K Dec 10 17:56 mysql
drwx------.  2 mysql       mysql       4.0K Dec 10 17:56 performance_schema
-rw-rw----.  1 mysql       mysql         52 Dec 10 17:56 aria_log_control
-rw-rw----.  1 mysql       mysql        16K Dec 10 17:56 aria_log.00000001
-rw-rw----.  1 mysql       mysql       5.0M Dec 10 17:56 ib_logfile1
srwxrwxrwx.  1 mysql       mysql          0 Dec 10 17:56 mysql.sock
-rw-rw----.  1 mysql       mysql        18M Dec 10 17:56 ibdata1
-rw-rw----.  1 mysql       mysql       5.0M Dec 10 17:56 ib_logfile0
drwx------. 19 development development 4.0K Dec 10 18:00 ..
drwxrwxr-x.  4 mysql       mysql        165 Dec 10 18:01 

и разрешения самого каталога mysql:

ls -haltr /home/development | grep mysql
drwxrwxr-x.  4 mysql       mysql        165 Dec 10 18:01 mysql

Посмотрите на свой скрипт systemd mariadb.service. По умолчанию используется ProtectHome, чтобы mysqld не мог получить доступ ни к чему в / home / по соображениям безопасности.

Есть ли у вас очень веская причина отклониться от путей по умолчанию вместо использования bind-mount? SELinux и другие функции безопасности существуют по очень веским причинам.

Убедитесь, что выполняются указанные ниже действия.

1- Чистый каталог данных:

rm -rf /home/development/mysql/*

2- Дайте каталогу данных правильный разрешения :

chown -R mysql:mysql /home/development/mysql

3- Копировать содержимое старого каталога с сохранение исходные разрешения:

cp -R -p /var/lib/mysql/* /home/development/mysql

4- mysql.sock путь должен быть таким же на клиент & mysld раздел.

5- Начало служба mariadb:

systemctl start mariadb

РЕДАКТИРОВАТЬ :

Напоследок я бы посоветовал создать еще один каталог и попробовать в нем. Если это все еще не работает, вернитесь в / var / lib / mysql, сделайте резервную копию вашей базы данных, измените имя / var / lib / mysql и выполните новую установку или запустите mariadb-install-db в новом каталоге, а затем восстановите свою базу данных. Также избегайте помещения базы данных в домашний каталог, создайте выделенную файловую систему, потому что, если пользовательская "разработка" будет удалена, база данных уйдет вместе с ней.