
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
代わりにハードリンクを使用してください。
/etc
etckeeper などのツールを使用してバージョン管理します。