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

MySQL не читает символические ссылки для файлов параметров my.cnf

Я использую MySQL 5.5 на Ubuntu.

Там, где я ожидал, есть файл my.cnf в / etc / mysql /. Отлично!

Для установки mysql в debian рекомендуется не редактировать файл my.cnf. В файле /etc/mysql/my.cnf есть директива IncludeDir, которая позволяет искать в папке /etc/mysql/conf.d/ дополнительные файлы параметров.

Когда я помещаю этот файл сюда:

/etc/mysql/conf.d/my-local.cnf

MySQL читает файл и отменяет все в /etc/mysql/my.cnf.

Большой! :-)

Вот в чем проблема:

Я храню свою локальную копию файла /etc/mysql/conf.d/my-local.cnf в системе управления версиями и хочу периодически обновлять ее для всей команды. Итак, мое решение - создать символическую ссылку:

cd /etc/mysql/conf.d/
ln -s /path/to/my/my-local.cnf my-local.cnf

MySQL не читает эту символическую ссылку.

Я подтвердил следующее:

Подводя итог, MySQL будет читать и анализировать, когда в папке /etc/mysql/conf.d/ есть физический файл. Mysql не будет читать символическую ссылку в этой папке.

Есть идеи? Может ли это быть проблема с debian / ubuntu?

Была обозначена похожая, но нерешенная и немного другая проблема. Вот.

Это может быть вызвано apparmor, который включен для mysqld по умолчанию из ubuntu 9.0.4. Посмотри пожалуйста http://en.wikipedia.org/wiki/AppArmor .

  • Вы можете изменить дополнения для конкретного сайта в /etc/apparmor.d/local/. Я столкнулся с той же проблемой и отредактировал /etc/apparmor.d/local/usr.sbin.mysqld, чтобы он работал. Обратите внимание на последнюю запятую в файле политики.

    # Site-specific additions and overrides for usr.sbin.mysqld.
    # For more details, please see /etc/apparmor.d/local/README.
    
    # vim:syntax=apparmor
    
    /etc/mysql/conf.d/* rl,
    @{HOMEDIRS}/** rwk,
    
  • После редактирования /etc/apparmor.d/local/usr.sbin.mysqld перезапустите службу apparmor с помощью service apparmor restart. Не должно быть ошибок или предупреждений относительно /etc/apparmor.d/local/usr.sbin.mysqld.
  • В моем случае я хотел использовать datadir и my.cnf для конкретного сайта, расположенные в домашнем каталоге пользователей.

Apparmor ничего не знает о новом местонахождении my.cnf

Сервер MySQL следует по символической ссылке и пытается открыть место назначения. Но apparmor это отрицает.

Чтобы решить проблему, вам нужно добавить путь к my.cnf к /etc/apparmor.d/usr.sbin.mysqld

На ум приходят некоторые возможности:

  • Создайте символическую ссылку в другом направлении, т.е.

    /home/developer/my-local.cnf -> /etc/mysql/conf.d/my-local.cnf
    
  • Вместо этого используйте жесткую ссылку.

  • Ставить /etc под контролем версий с помощью такого инструмента, как etckeeper.