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

Не могу прочитать каталог /etc/my.cnf. (Код ошибки: 2)

Я запускаю MariaDB (libmysql - 5.5.41-MariaDB), и сегодня я заметил, что не могу перейти в mysql через командную строку для создания файла дампа. Это вызовет ошибку:

mysql: не удается прочитать каталог /etc/my.cnf. (Код ошибки: 2) Неустранимая ошибка при обработке значений по умолчанию. Программа прервана

Не уверен, зачем ему читать каталог с именем «my.cnf». но я вижу каталог под названием "my.cnf.d" в папке etc. Возможно, это какая-то опечатка, но когда я зашел в свой файл my.cnf, я не заметил никаких настроек для этого. Единственное, что с ним тесно связано:

#
# include all files from the config directory
#
!includedir /etc/my.cnf.d

Это то, что недавно произошло, и я ничего не изменил в настройках, поэтому я не уверен, что происходит с mariadb. Любая помощь будет оценена.

РЕДАКТИРОВАТЬ: Хорошо, я решил проблему, выполнив mkdir my.cnf. (не уверен, для чего нужен этот каталог, поскольку в нем ничего нет. Никогда ничего не менял в my.cnf, чтобы он начал требовать этот каталог ..

решение на самом деле простое.


!includedir /etc/my.cnf.d

это ваша последняя строка в /etc/my.cnf, поэтому mysql не может прочитать полностью '/etc/my.cnf.d' только '/etc/my.cnf'.

Вам просто нужно добавить еще одну строку, чтобы mysql мог ее прочитать.


!includedir /etc/my.cnf.d
# add new line here

Учитывая, что он работает, когда вы отключаете чтение значений по умолчанию (--no-defaults), проблема находится где-то в файлах по умолчанию, их разрешениях или разрешениях каталогов, содержащих их.

Внимательно изучите права доступа к / etc, /etc/my.cnf, /etc/my.cnf.d, файлам внутри /etc/my.cnf.d, а также к ~ / .my.cnf.

Проверьте содержимое каждого файла на наличие дополнительных включений и любых других директив, которые могут обращаться к файлам.

Если SELinux включен, проверьте содержимое /var/log/audit.log на наличие соответствующих запрещенных записей AVC.

Вы должны добавить новую пустую строку после! Includedir /etc/my.cnf.d

! includedir /etc/my.cnf.d

ПУСТАЯ СТРОКА

Вы должны просто нажать «ввод» в конце этой строки:! Includedir /etc/my.cnf.d

Очень странно: сбой произошел также внезапно (после перезапуска контейнера докеров) - в MySQL Ver 14.14 Distrib 5.7.23, Debian 9.5, Docker 17.12.1-ce

Попробовать много чего не получилось, все разрешения правильные (афайк).

Последний вариант заключался в том, чтобы следовать «Редактировать» автора вопроса, и это сработало!

Я сделал:

mv /etc/my.cnf /etc/_my.cnf    # there was just the line [mysql] in it, nothing else
mkdir /etc/my.cnf
chown mysql:mysql /etc/my.cnf

теперь после бега service mysql start он внезапно говорит: «Сервер MySQL уже запущен». После service mysql restart все работает как до выключения docker conatainer.

Это отсутствие подключения происходит со мной каждые пару раз, когда я перезагружаю свой MacBook. Я думаю, это как-то связано с конкурирующими версиями Mysql. Собственный Mac MySql VS. Сварить MySql. Это все, что мне нужно сделать:

sudo mkdir /usr/local/etc/my.cnf.d

Затем перезапустите мой терминал. Я ссылаюсь на эту статью раз в месяц или два. /usr/local/etc/my.cnf включает в себя /usr/local/etc/my.cnf.d каталог, и это не удается, если каталог не существует. Так что мне просто нужно создать каталог. Раздражающий маленький баг, но его легко исправить.

Я решил эту проблему в macOS Catalina mariadb.

mkdir /usr/local/etc/my.cnf.d

brew services stop mariadb

brew services start mariadb