MySQL がオプション ファイル my.cnf のシンボリック リンクを読み取らない

MySQL がオプション ファイル my.cnf のシンボリック リンクを読み取らない

Ubuntu で MySQL 5.5 を実行しています。

予想通り、/etc/mysql/ に my.cnf ファイルがあります。 - 素晴らしい!

Debian の MySQL インストールでは、my.cnf ファイルを編集しないことをお勧めします。/etc/mysql/my.cnf ファイルには、/etc/mysql/conf.d/ フォルダーでその他のオプション ファイルを探すための IncludeDir ディレクティブがあります。

ここにファイルを配置すると:

/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 のマニュアルに従って .cnf ファイル拡張子が付きます。
  • mysqlユーザーはこのファイルにアクセスできます
  • すべてのユーザーがこのファイルにアクセスできます
  • mysqlユーザーはシンボリックリンクにアクセスできます
  • すべてのユーザーがシンボリックリンクにアクセスできる

まとめると、MySQL は /etc/mysql/conf.d/ フォルダに物理ファイルがある場合に読み取りと解析を行います。Mysql はこのフォルダ内のシンボリックリンクを読み取りません。

誰かアイデアはありますか? これは Debian/Ubuntu の問題でしょうか?

類似しているが未解決で少し異なる問題が概説された。ここ

答え1

アパーマーは、my.cnf

MySQL サーバーはシンボリックリンクをたどり、宛先を開こうとします。しかし、apparmor はこれを拒否します。

この問題を解決するには、パスmy.cnf/etc/apparmor.d/usr.sbin.mysqld

答え2

これは、ubuntu 9.0.4からデフォルトでmysqldに有効になっているapparmorが原因である可能性があります。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
    
  • 代わりにハードリンクを使用してください。

  • /etcetckeeper などのツールを使用してバージョン管理します。

関連情報