जवाबों:
यदि आप लिनक्स पर हैं, तो 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
तो, जैसा कि आप देख सकते हैं। यह .cnf फ़ाइलों को सूचीबद्ध करता है, कि यह उपयोग करने का प्रयास करता है और अंत में उपयोग करता है।
ps auxf
और MySQL के लिए निष्पादित कमांड को ढूंढना चाहिए । आमतौर पर यह कुछ इस तरह दिखता है mysqld --basedir=/usr/local/mysql ...
(ध्यान दें ... इसका मतलब है कि कमांड में अधिक झंडे हो सकते हैं लेकिन मैं इसे सूचीबद्ध नहीं करूँगा) एक बार जब आप इसे पा लेते हैं, तो पूरी चीज़ की प्रतिलिपि बनाएँ और फिर MySQL को बंद कर दें। यदि आप लिनक्स पर हैं तो यह /etc/init.d/mysqld stop
या है mysqladmin -u root -p shutdown
। फिर strace
आपके द्वारा कॉपी की गई mysql कमांड से रन करें। तो यह ऐसा दिखेगा:strace mysqld --basedir=/usr/local/mysql
open(...
लाइन नहीं है । इसके बजाय मेरे पास 4 लाइनें हैं जो समाप्त होती हैं = -1 Err#2
। अब आपको कैसे पता चलेगा कि कौन सी फ़ाइल भरी हुई है?
sudo dtruss mysqld 2>&1|grep my.cnf
@mgPePe, आउटपुट आउटपुट का अर्थ है कि कोई भी फाइल नहीं मिली थी इसलिए किसी को खोला नहीं गया था।
शानदार "उच्च प्रदर्शन 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
!includedir
। मैं यह पता लगाने की कोशिश कर रहा हूं कि !includedir
मेरी /etc/mysql/my.cnf
फाइल में निर्देश काम क्यों नहीं कर रहा है।
mysqld
पूर्ण पथ के साथ कॉल करने की आवश्यकता क्यों होगी ?!
यदि आप mysql --verbose --help | less
इसे चलाते हैं, तो यह आपको लाइन 11 के बारे में बताएगा कि .cnf
यह किन फ़ाइलों के लिए दिखेगा।
आप यह mysql --print-defaults
दिखाने के लिए भी कर सकते हैं कि कॉन्फ़िगरेशन मान कैसे उपयोग करेगा। यह पहचानने में भी उपयोगी हो सकता है कि कौन सी फाइल कौन सी फाइल लोड कर रही है।
mysqld
इसके बजाय इस्तेमाल कर सकते हैंmysql
mysqld --print-defaults
, यह मुझे वही दिया जो मैं चाहता था जब मैंने इस प्रश्न को गुगलाया ।
मैं विंडोज पर हूं और मैंने MySQL समुदाय का सबसे हालिया संस्करण 5.6 स्थापित किया है
प्रशासनिक उपकरण> सेवा> MySQL56> राइट क्लिक> गुण पर जाने और निष्पादन योग्य के लिए पथ की जाँच करने के लिए मैंने क्या देखा था
"C: / Program Files / MySQL / MySQL Server 5.6 / bin \ mysqld" --defaults-file = "C: \ ProgramData \ MySQL \ MySQL सर्वर 5.6 \ my.ini" MySQL56
C:\ProgramData\MySQL\MySQL Server 5.7\my.ini
डिफ़ॉल्ट रूप से है।
एक विकल्प का उपयोग करना है
mysqladmin variables
mysqld --help --verbose खतरनाक है। आप आसानी से रनिंग इंस्टेंस के लिए पिडफाइल को ओवरराइट कर सकते हैं! इसका उपयोग --pid-file = XYZ के साथ करें
यदि आप 1 से अधिक इंस्टेंस चला रहे हैं, तो ओह, और आप वास्तव में इसका उपयोग नहीं कर सकते। यह केवल आपको डिफ़ॉल्ट मान दिखाएगा।
वास्तव में इसके बारे में अच्छा लेख:
बस ubuntu पर एक त्वरित परीक्षण किया:
mysql-server स्थापित किया, जिसने /etc/mysql/my.cnf बनाया
mysqld --verbose --help | grep -A 1 "डिफ़ॉल्ट विकल्प"
110112 13:35:26 [नोट] प्लगइन 'फेडर्ड' अक्षम है।
डिफ़ॉल्ट विकल्प दिए गए क्रम में निम्नलिखित फाइलों से पढ़े जाते हैं: /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 "डिफ़ॉल्ट विकल्प"
मुझे यह वास्तव में उपयोगी लगा:
Control Panel -> Administration Tools
Properties
Path to executable
और देखें कि क्या इसमें पथ शामिल हैmy.ini/my.cfg
कुछ सर्वरों में एकाधिक MySQL संस्करण स्थापित और कॉन्फ़िगर किए गए हैं। सुनिश्चित करें कि आप यूनिक्स कमांड के साथ चल रहे सही संस्करण के साथ काम कर रहे हैं:
ps -ax | grep mysql
एक सेवा के रूप में mysql के साथ विंडोज़ सर्वर चलाने वाले लोगों के लिए, यह पता लगाने का एक आसान तरीका कि आप कौन सी कॉन्फ़िगर फ़ाइल चला रहे हैं, सेवाओं के नियंत्रण कक्ष को खोलने के लिए, अपनी mysql सेवा ढूंढें (मेरे मामले में 'MYSQL56'), राइट क्लिक करें और गुण क्लिक करें । फिर यहां से आप "पथ से निष्पादन योग्य" की जांच कर सकते हैं जिसमें एक defaults-file
स्विच होना चाहिए जो आपकी कॉन्फ़िगरेशन फ़ाइल को इंगित करता है।
यदि आप विंडोज पर हैं, तो आप Sysinternals procmon का उपयोग कर सकते हैं । इसे खोलें और फ़िल्टर सेटिंग को इस तरह कॉन्फ़िगर करें, फिर "जोड़ें" पर क्लिक करें। अब procmon mysqld की निगरानी करेगा।
अब अपने mysql सर्वर को सामान्य रूप में शुरू करें। Procmon mysql के बैकग्राउंड ऑपरेशन्स को कैप्चर करेगा। "मेरी" खोजें। परिणाम के परिणाम फलक में और आपको निम्न जैसा कुछ मिलेगा:
यह स्पष्ट है कि mysql बदले में कॉन्फ़िगरेशन फ़ाइलों की एक सूची खोजता है। मेरे मामले में यह C:\mysql-5.7.19-winx64\my.cnf
सफलतापूर्वक मिला है इसलिए यह इस एक का उपयोग कर रहा है।