2011-12-15 61 views
1

保存MySQL服務器實例的windows服務的默認名稱是'MySQL'。但是MySQL 5.5允許用戶在安裝後爲其指定任何名稱。現在我需要知道MySQL的Windows服務的名稱,但我不明白我的應用程序應該在哪裏尋找這個名字。我試圖特別讓這個名字不尋常,然後找到MySQL將它存儲在系統中的位置。但這個不尋常的名字只在Windows註冊表的服務列表中。 my.ini,my-huge.ini和MySQL服務器的其他ini文件不包含有關如何命名windows服務的信息。那麼MySQL在哪裏存儲這個名字? Windows版本:7 X86/X64,MySQL版本:5.5。 在此先感謝。查找MySql服務器實例的windows服務名稱

回答

0

MySQL不需要在任何地方存儲這個名字。服務器進程由Windows服務控制器啓動,客戶端通過網絡與服務器進行通信,因此它不需要知道名稱。正如您發現的,唯一出現的位置是註冊表中的服務列表。考慮到在Linux上,守護進程不像Windows服務那樣有特殊的名稱。服務名稱是在Windows上運行的工件,MySQL不知道或關心它。

+1

這是真的,但如果我們在初始指定服務名稱後啓動'MySQL實例配置嚮導',我們可以在嚮導的步驟之一中看到Windows服務的名稱。 MySQL Workbench在「創建新服務器實例配置文件」表單中也知道這個名稱。所以它存儲在某個地方,但不容易找到它。 – Shoar

3

MySQL的新手,我遇到了同樣的問題。我做了什麼來解決此設置實例shared_memory_base_name相同的服務名稱在ini:

# shared_memory 
shared_memory_base_name=MySQLServiceName 

這使得通過系統變量@@ shared_memory_base_name可用它。我實際上不啓用共享內存連接,只需設置變量。

我還沒有在Linux上試過,雖然也許設置@@ socket系統變量可以提供相同的功能。

我意識到這是一個有點晚來幫助你了,但有人可能會發現它很有用...

+0

如果你不知道答案問你的意見成cooment ...不正確的新答案 –

1

它存儲在註冊表中。 MySQL實例配置嚮導讀取包含名稱以及對應服務.exe的路徑的註冊表。

但我不完全知道如何以編程方式查找這些註冊表項。

PS:該條目可能可以在這裏找到:

Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MySQL[xy]

(xy爲版本,如:57爲5.7)

服務名被存儲在這裏鍵 「顯示名稱」 和「ImagePath」中的.exe路徑。

注意:這些路徑也可能包含啓動參數,如my.ini文件的路徑。