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

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 не читает эту символическую ссылку.

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

  • Как физический файл, так и символическая ссылка имеют расширение .cnf, согласно руководству по MySQL.
  • Пользователь mysql имеет доступ к этому файлу
  • Каждый пользователь имеет доступ к этому файлу.
  • Пользователь mysql имеет доступ к символической ссылке
  • Каждый пользователь имеет доступ к символической ссылке.

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

Есть идеи у кого-нибудь? Может ли это быть проблема Debian/Ubuntu?

Была описана похожая, но нерешенная и немного иная проблема.здесь.

решение1

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

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

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

решение2

Это может быть вызвано 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, расположенный в домашнем каталоге пользователя.

решение3

На ум приходят следующие варианты:

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

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

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

Связанный контент