OS X पर मेरा mysql लॉग कहां है?


74

मैंने / var / log और / usr / लोकल / mysql को चेक किया और मैं लॉग को खोजने के लिए प्रतीत नहीं हो सकता। मैं एक php फ़ंक्शन के साथ डेटाबेस कनेक्शन स्थापित करने में त्रुटि का निवारण करने का प्रयास कर रहा हूं।

जवाबों:


95

जैसा कि चीलियन ने उल्लेख किया है, ऐसे कई तरीके हैं जो आपके mysql को स्थापित कर सकते हैं। जिनमें से प्रत्येक आपके डेटा को अलग-अलग स्थानों में डीआईआर और / या लॉग में रखेगा। निम्नलिखित कमांड आपको (और हमें) एक अच्छा संकेत देगा कि कहाँ देखना है।

ps auxww|grep [m]ysqld

# Putting brackets around the first char is a `grep`+`ps` trick
# to keep it from matching its own process.
# Note: For zsh compatibility put quotes around the grep regex

क्या आप कृपया उस आदेश का परिणाम यहाँ पोस्ट कर सकते हैं? मेरा ऐसा दिखता है:

_mysql     101   0.0  0.3   112104  13268   ??  S    12:30AM   0:13.20 /opt/local/libexec/mysqld --basedir=/opt/local --datadir=/opt/local/var/db/mysql --user=mysql --pid-file=/opt/local/var/db/mysql/rbronosky-mbp.pid
root        76   0.0  0.0   600172    688   ??  S    12:30AM   0:00.02 /bin/sh /opt/local/lib/mysql/bin/mysqld_safe --datadir=/opt/local/var/db/mysql --pid-file=/opt/local/var/db/mysql/rbronosky-mbp.pid

उस से आप देख सकते हैं कि मेरा डेटाडियर है /opt/local/var/db/mysql(क्योंकि मैंने मैकपोर्ट्स के माध्यम से स्थापित किया है)। आइए इस पाठ को थोड़ा और आगे ले जाएं ...

पहली पंक्ति से आप देख सकते हैं कि मेरा डेमॉन है /opt/local/libexec/mysqldmysqldसाथ बुलाया जा सकता है --verbose --helpसभी कमांड लाइन विकल्पों की सूची पाने के लिए (और यहां महत्वपूर्ण / महत्वपूर्ण हिस्सा है!) मूल्यों है कि यदि आप mysqld शुरू करने थे बजाय सिर्फ मदद उत्पादन जाँच इस्तेमाल किया जाएगा, जिसके बाद। मान आपके संकलित समय कॉन्फ़िगरेशन, my.cnfफ़ाइल और किसी भी कमांड लाइन विकल्प का परिणाम हैं। मैं इस सुविधा का उपयोग यह पता लगाने के लिए कर सकता हूं कि मेरी लॉग फाइलें कहां हैं, जैसे:

/opt/local/libexec/mysqld --verbose --help|grep '^log'

मेरा ऐसा दिखता है:

log                               /tmp/mysql.log
log-bin                           /tmp/mysql-bin
log-bin-index                     (No default value)
log-bin-trust-function-creators   FALSE
log-bin-trust-routine-creators    FALSE
log-error                         /tmp/mysql.error.log
log-isam                          myisam.log
log-queries-not-using-indexes     FALSE
log-short-format                  FALSE
log-slave-updates                 FALSE
log-slow-admin-statements         FALSE
log-slow-queries                  (No default value)
log-tc                            tc.log
log-tc-size                       24576
log-update                        (No default value)
log-warnings                      1

भौचक्का होना! दुनिया की सभी सलाह मेरी मदद करने वाली नहीं थीं क्योंकि मेरी लॉग फ़ाइल को पूरी तरह से गैर-मानक स्थान पर रखा गया है! मैं अपने पास रखता हूं /tmp/क्योंकि मेरे लैपटॉप पर, मैं रिबूट पर अपने सभी लॉग को ढीला करने के लिए परवाह नहीं करता (वास्तव में मुझे पसंद है)।

चलो यह सब एक साथ रखा और आप एक oneliner बनाते हैं:

$(ps auxww|sed -n '/sed -n/d;/mysqld /{s/.* \([^ ]*mysqld\) .*/\1/;p;}') --verbose --help|grep '^log'

निष्पादित करें कि एक कमांड और आपको mysql के आपके रनिंग इंस्टेंस के सभी लॉग्स की एक सूची मिल जाएगी।

का आनंद लें!

यह बैश-फू सभी चीजों के लिए मेरी प्रतिबद्धता से मुक्त करने के लिए लाया है ओपन सोर्स।


2
mysqladmin variablesअब सीधे इस्तेमाल के बजाय वर्तमान मूल्य प्राप्त करने के लिए पसंदीदा कमांड हैmysqld
जॉन कमिंग्स

@ जॉनकोमिंग्स, स्रोत?
पेसियर

आज मुझे कोई टिप्पणी नहीं के साथ एक डाउन वोट मिला। मैं अपने सभी उत्तर बनाए रखता हूं। यहां तक ​​कि जो 10 साल पुराने हैं। आप नीचे मतदान करके किसी की मदद नहीं कर रहे हैं। एक टिप्पणी छोड़ें!
ब्रूनो ब्रोंस्की

@ जेएम 3 देखभाल विस्तृत करने के लिए? अब मेरा MacOS तक पहुँच नहीं है।
ब्रूनो ब्रोंस्की

12

MySQL / MariaDB लॉग के 3 प्रकार हैं:

  • log_error त्रुटि संदेश लॉग के लिए;
  • general_log_fileसामान्य क्वेरी लॉग फ़ाइल के लिए (यदि सक्षम है general_log);
  • slow_query_log_fileधीमी क्वेरी लॉग फ़ाइल के लिए (यदि सक्षम है slow_query_log);

इस शेल कमांड द्वारा उपर्युक्त लॉग की सेटिंग्स और स्थान की जाँच करें:

mysql -se "SHOW VARIABLES" | grep -e log_error -e general_log -e slow_query_log

डिफ़ॉल्ट रूप से लॉग आपके डेटा में संग्रहीत किए जाते हैं, इसलिए इस शेल कमांड द्वारा स्थान की जांच करें:

mysql -se "SELECT @@datadir"

अपनी त्रुटि लॉग देखने के लिए, आप चला सकते हैं:

sudo tail -f $(mysql -Nse "SELECT @@log_error")

यदि आपने सामान्य लॉग सक्षम किया है, तो इसे देखने के लिए, दौड़ें:

sudo tail -f $(mysql -Nse "SELECT CONCAT(@@datadir, @@general_log_file)")

10

इस जानकारी को खोजने का दूसरा तरीका उपयोग करना है lsof

  1. पीआईडी ​​को खोजने के लिए गतिविधि मॉनिटर का उपयोग करें mysql, या ps -ef | grep mysqldइसे खोजने के लिए उपयोग करें।

  2. sudo lsof -p PID_OF_MYSQLD और देखें कि MySQL के पास कौन सी फाइलें हैं।


6

इसे खोजने में थोड़ा समय लगा ... इस स्थान को आज़माएँ: '

sudo vi /usr/local/mysql/data/YOUR-USERNAME.local.err

3
मेरा था/usr/local/var/mysql/<USERNAME>.local.err
jonnysamps

3

डिफ़ॉल्ट रूप से, सभी लॉग फ़ाइलें mysqld डेटा निर्देशिका में बनाई जाती हैं।

स्रोत: MySQL प्रलेखन

आप mysqlbinlogबाइनरी लॉग फ़ाइलों को / usr / स्थानीय / mysql / data / (मेरी स्थापना में सभी बाइनरी नहीं थे) को पढ़ने के लिए उपयोग कर सकते हैं । कुछ त्रुटियों को बस स्टैडर के लिए निर्देशित किया जाता है ताकि आप भी जांचना चाहें /var/log/system.log


मेरे पास mysql dir में डेटा निर्देशिका नहीं है। मैंने सभी / usr / स्थानीय / mysql / निर्देशिका को देखा है और लॉग नहीं ढूँढ सकता। mysql कॉन्फ़िगरेशन को देखने का कोई तरीका नहीं है? एक phpinfo की तरह ()
टोनी

आपने MySQL कैसे स्थापित किया? Mac OS X सर्वर, MacPorts, या आधिकारिक MySQL पैकेज के साथ पहले से स्थापित MySQL?
चीलियन

0

उस लॉग को रखने वाला फ़ोल्डर बिना उपयोग किए आपके लिए सुलभ नहीं हो सकता है sudo:

sudo ls -l "/usr/local/mysql-5.0.51a-osx10.5-x86"
[..]
drwxr-x---   4 _mysql  wheel    136 Jul 10 23:06 data

यदि आप एक बड़ी लॉग फ़ाइल खोजने के लिए होते हैं और जब आप टाइम मशीन का उपयोग कर रहे हैं, तो आप पढ़ना चाह सकते हैं कि टाइम मशीन क्या कर रही है? सर्वर दोष पर।


मेरे पास / usr / स्थानीय / mysql में कोई डेटा नहीं है
टोनी

0

डिफ़ॉल्ट रूप से, सभी लॉग फ़ाइलें mysqld डेटा निर्देशिका में बनाई जाती हैं। दुर्भाग्य से, कई लोग अपने लॉग फाइल (और प्रोग्राम) को अपने विशिष्ट स्थानों पर नहीं रखते हैं। मैं उनमें से एक हूं!

जब तक मैंने MySQL के लिए Navicat की कोशिश नहीं की, मैं MySQL के साथ खुद इस दिनचर्या से गुज़रा । बाद में मैंने नवीक प्रीमियम में अपग्रेड किया । दोनों में एक निगरानी उपकरण होता है जिसमें एक व्यापक सूची में सभी सर्वर चर के साथ एक टैब होता है। यहाँ log_error सर्वर चर के साथ एक स्क्रीनशॉट है:

log_error सर्वर चर Navicat सर्वर मॉनिटरिंग टूल में

log_error सर्वर चर Navicat सर्वर मॉनिटरिंग टूल में

आप सूची में चर भी वहीं सेट कर सकते हैं।

चीयर्स!


-2

/Library/Logs/MySQL.log


मैं वहाँ अन्य लॉग देखता हूं, लेकिन mysql नहीं
टोनी

मैक ओएस एक्स सर्वर का यह कौन सा संस्करण है? सामान्य तौर पर, आप Mac OS X सर्वर के तहत / var / log / & / Library / Logs / में देखना चाहेंगे। इस समस्या के लिए अधिक विशिष्ट, /var/log/system.log देखें, / var / mysql (.err लॉग फ़ाइलों की तरह) में कुछ उपयोग हो सकता है, लेकिन I (तेंदुए सर्वर के डिफ़ॉल्ट कॉन्फ़िगरेशन पर) भी पूर्वोक्त है / लाइब्रेरी / लॉग्स / MySQL.log। क्या आप सॉकेट या नेटवर्क कनेक्शन के माध्यम से जुड़ने की कोशिश कर रहे हैं? यदि बाद में, क्या आपने सर्वर व्यवस्थापक में (तेंदुए पर "नेटवर्क कनेक्शन सक्षम करें"? टाइगर में यह एक अलग ऐप था / एप्लिकेशन / उपयोगिताएँ)?
मुर्दाघर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.