
我在 Ubuntu 上運行 MySQL 5.5。
/etc/mysql/ 中有一個 my.cnf 文件,我希望它在該位置。 - 偉大的!
對於 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 不會讀取此符號連結。
我已驗證以下內容:
- 根據 mysql 手冊,實體檔案和符號連結都有 .cnf 檔案副檔名。
- mysql用戶有權存取該文件
- 每個使用者都可以存取該文件
- mysql 用戶有權訪問符號鏈接
- 每個用戶都可以訪問符號鏈接
所以總結一下,當/etc/mysql/conf.d/資料夾中有實體檔案時,MySQL就會讀取並解析。 Mysql 不會讀取此資料夾中的符號連結。
有人有什麼想法嗎?這可能是 debian/ubuntu 問題嗎?
概述了一個類似但未解決且略有不同的問題這裡。
答案1
Apparmor 對新位置一無所知my.cnf
MySQL 伺服器遵循符號連結並嘗試開啟目標。但阿帕莫否認了這一點。
要解決該問題,您必須將路徑新增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 等工具進行版本控制。