MySQL 不讀取選項檔 my.cnf 的符號鏈接

MySQL 不讀取選項檔 my.cnf 的符號鏈接

我在 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 等工具進行版本控制。

相關內容