MySQL不读取选项文件my.cnf的符号链接

我在Ubuntu上运行MySQL 5.5。

在/ etc / mysql /中有一个my.cnf文件,我希望它是。 太好了!

对于mysql的debian安装,build议不要编辑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文件的本地副本,并且想要定期更新整个团队。 所以,我的解决scheme是符号链接

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

MySQL不读这个符号链接。

我已经validation了以下内容:

  • 物理文件和符号链接都具有.cnf文件扩展名,按照mysql的手册。
  • mysql用户可以访问这个文件
  • 每个用户都可以访问这个文件
  • mysql用户可以访问符号链接
  • 每个用户都可以访问符号链接

所以总而言之,当/etc/mysql/conf.d/文件夹中有一个物理文件时,MySQL将会读取和parsing。 Mysql不会读取此文件夹中的符号链接。

任何想法的人? 这可能是一个debian / Ubuntu的问题?

这里概述了一个类似但未解决的稍有不同的问题。

Apparmor不知道my.cnf的新位置

MySQL服务器遵循符号链接并尝试打开目的地。 但是赞同否认这一点。

要解决这个问题,你必须把my.cnf的path添加到/etc/apparmor.d/usr.sbin.mysqld

这可能是由默认启用mysqld的apparmor从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服务。 关于/etc/apparmor.d/local/usr.sbin.mysqld应该没有错误或警告。
  • 就我而言,我想使用位于用户主目录中的datadir和特定于站点的my.cnf。

想到一些可能性:

  • 在另一个方向创build符号链接,即

     /home/developer/my-local.cnf -> /etc/mysql/conf.d/my-local.cnf 
  • 改用硬链接。

  • 使用etckeeper /etc工具将版本控制在/etc下。