
Я использую 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.