2009-02-24 64 views

回答

47

如果您使用的是Linux,請使用strace啓動'mysqld',例如strace ./mysqld

在所有其他系統調用,你會發現這樣的:

stat64("/etc/my.cnf", 0xbfa3d7fc)  = -1 ENOENT (No such file or directory) 
stat64("/etc/mysql/my.cnf", {st_mode=S_IFREG|0644, st_size=4227, ...}) = 0 
open("/etc/mysql/my.cnf", O_RDONLY|O_LARGEFILE) = 3 

所以,你可以see..it列出了.CNF文件,它會嘗試使用和最終用途。

+6

如何在運行系統上做到這一點而不會搞亂任何東西? – 2010-05-11 18:08:32

+3

@MilanBabuškov你應該運行`ps auxf`並找到爲MySQL執行的命令。通常,它看起來像一些諸如'的mysqld --basedir =在/ usr /本地/ MySQL的`(注意...只是意味着有可能在該命令的更多的標誌,但我不會列出所有的話)一旦你找到它,複製整個事情,然後關閉MySQL。如果你在Linux上,它是`/etc/init.d/mysqld stop`或`mysqladmin -u root -p shutdown`。然後用你複製的mysql命令運行`strace`。因此,它看起來像這樣:`strace的的mysqld --basedir =在/ usr /本地/ mysql` – Hengjie 2012-11-24 18:08:15

+0

我沒有'開(...`行,而不是我有4行以`結束= -1錯誤#2`你怎麼我現在該文件被加載知道 – mgPePe 2014-03-17 15:36:43

50

如果您運行mysql --verbose --help | less它會告訴您有關第11行,其中.cnf文件它將查找。

你也可以做mysql --print-defaults向你展示它將如何使用它的配置值。這對於識別它正在加載的配置文件也很有用。

+1

+1因爲這是mysql推薦的方式,對於Windows來說,一個簡單的方法是將輸出轉儲到文件中,如果你喜歡分析內容 – kta 2013-12-13 11:24:15

+0

在windows ,它告訴我的位置的列表,但不正確的,這不是我設法找到與MySQL工作臺(http://stackoverflow.com/a/17953456/1504300)。 – reallynice 2015-02-03 08:23:30

172

從夢幻般的 「高性能MySQL的」 O'Reilly出版摘自:

$ which mysqld 
/usr/sbin/mysqld 

$ /usr/sbin/mysqld --verbose --help | grep -A 1 "Default options" 
Default options are read from the following files in the given order: 
/etc/mysql/my.cnf ~/.my.cnf /usr/etc/my.cnf 
8

只是做了一個快速測試在Ubuntu:

  • 安裝的MySQL服務器,它創建的/ etc/mysql/my.cnf

  • mysqld --verbose --help | grep -A 1「Default options」

110112 13:35:26 [Note]插件'FEDERATED'被禁用。
默認選項從以下文件中給定的順序讀: 的/etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf〜/ .my.cnf

  • 創建的/etc/my.cnf和/usr/etc/my.cnf,每一個不同的端口號

  • 重啓MySQL的 - 它是使用在/usr/etc/my.cnf

  • 設置的端口號

同時還發現了mysqld的--defaults-file選項。如果你在那裏指定一個配置文件,那麼只會使用那個文件,不管 /usr/sbin/mysqld返回的是什麼--verbose --help | grep -A 1「默認選項」

12

mysqld --help --verbose是危險的。您可以輕鬆地覆蓋運行實例的pidfile!使用它與--pid-file = XYZ

哦,如果你有超過1個實例運行,你不能真正使用它。它只會顯示你的默認值。

它真正的好文章:

How to find MySQL configuration file?

16

另一種方法是使用

mysqladmin variables 
2

某些服務器已安裝並配置了多個版本的MySQL。請確保您正在處理正確版本的Unix的 命令運行:

ps -ax | grep mysql 
22

我在Windows和我已經安裝了最新的MySQL社區5.6

我做什麼看什麼版本配置文件的用途是去管理工具>服務> MySQL56>右鍵單擊>屬性,並檢查可執行文件的路徑:

「C:/ Program Files/MySQL/MySQL Server 5.6/bin \ mysqld」--defaults- file =「C:\ ProgramData \ MySQL \ MySQL Server 5.6 \ my.ini」MySQL56

3

我發現這真的有用:

  1. 查找服務下Control Panel -> Administration Tools
  2. 右擊鼠標,MySQL的過程中,選擇Properties
  3. 單擊並選擇Path to executable,看看它是否包含路徑my.ini/my.cfg
1

對於運行帶有mysql作爲服務的windows服務器的人來說,找到正在運行的配置文件的一個簡單方法是打開服務控制ol面板,找到你的mysql服務(在我的情況下'MYSQL56'),右鍵單擊並單擊屬性。然後從這裏你可以檢查「Path to Executable」,它應該有一個defaults-file開關,它指向你的配置文件的位置。

1

使用MySQL工作臺將在「服務器狀態」顯示: enter image description here

0

萬一你正在運行MAC這也可以通過實現:

sudo dtruss mysqld 2>&1 | grep cnf 
0

如果您在Windows,你可以使用Sysinternals procmon。打開它並像這樣配置過濾器設置,然後點擊「添加」。現在procmon將監控mysqld。

enter image description here

現在開始你的MySQL服務器正常。 Procmon將捕獲mysql的後臺操作。搜索「我的」。在將procmon結果窗格中,你會發現類似如下:

enter image description here

很明顯,MySQL的搜索配置文件依次列表。在我的情況下,它發現C:\mysql-5.7.19-winx64\my.cnf成功,所以它使用這一個。

相關問題