Я установил MariaDB и изменил каталог данных на / tank / mysql, и это сработало.
После этого мне пришлось переустановить MariaDB, и я использовал:
apt -y remove --purge mariadb-server
apt -y install mariadb-server
и все прошло нормально.
Проблема теперь в том, что datadir не изменяется.
Файл, в котором я внес изменения, такой же, как и раньше: /etc/mysql/mariadb.conf.d/60-mariadb.cnf
Код:
[mysqld]
datadir=/tank/mysql
MariaDB указывает на / var / lib / mysql
Я знаю, что лучшим решением было бы переустановить весь сервер ubuntu, но сейчас это не вариант.
Если есть еще что-нибудь, что я могу написать, чтобы улучшить свой вопрос, пожалуйста, предложите.
Ни один файл не содержит "/ var / lib / mysql" в папке / etc / mysql.
У меня уже была эта проблема после переустановки на другом сервере, и я не мог ее решить, поэтому в конце я переустановил весь сервер.
Информация:
ОС: сервер Ubuntu 16.04
Версия MariaDB: 10.2.15
В Debian 9 я решил, запустив:
mysql_install_db --datadir=YOURDATADIR
затем изменение datadir
вариант в
/etc/mysql/mariadb.conf.d/50-server.cnf
(или любой другой файл, содержащий datadir
option) в соответствии с YOURDATADIR выше и перезапустить mariadb.service
Поздравляем @CroisOS!
Для тех, кто сталкивался с подобной проблемой, вот что я сделал. Стоит проверить, так как это может быть ваша ситуация.
Во-первых, вы должны выяснить, не содержит ли другой файл datadir
директива (это просто пример). Бегать grep -R datadir /etc/mysql/
.
Однажды я тоже боролся с такой проблемой, потому что systemctl stop|restart mysqld.service
не работал (служба не была остановлена и не перезапущена вообще). Решение было mysqladmin shutdown
. Убедитесь, что служба больше не работает ( ps faux | grep mysqld
). Затем снова перезапустите службу с помощью systemctl
.
Проверьте глобальную переменную, соответствующую директиве, в консоли mariadb, чтобы изменения вступили в силу.
Наконец-то мне удалось решить.
ПРИМЕЧАНИЕ: это решение только для изменения datadir после переустановки MariaDB, если MariaDB была изначально установлена, она должна работать при обычном изменении datadir в файле cnf.
# that failed
apt -y remove --purge mariadb-server
apt -y remove --purge mariadb-server-10.2
apt -y autoremove
rm -fr /etc/mysql/
rm -fr /var/lib/mysql
rm /usr/bin/mysql
reboot
# in this moment datadir is /var/lib/mysql
apt -y install mariadb-server
/etc/init.d/mysql stop
cp -R /var/lib/mysql/ /tank/mysql/
cd /tank/mysql/
rm ibdata1
rm ib_*
Ни один файл не содержит "/ var / lib / mysql" в папке / etc / mysql.
Вполне возможно, что / var / lib / mysql скомпилирован по умолчанию для использования в случае, если datadir не определен иначе.
Вам следует изучить каскад файлов .cnf и убедиться, что файл /etc/mysql/mariadb.conf.d/60-mariadb.cnf действительно включен.
Запустите команду mysql --help
и найдите строку вроде
Параметры по умолчанию считываются из следующих файлов в указанном порядке: /etc/mysql/my.cnf /etc/my.cnf ~ / .my.cnf
Найдите каждый файл и убедитесь, что, если они существуют, один включает /etc/mysql/mariadb.conf.d/*.cnf
или похожие. Если он отсутствует, вы должны его добавить.