MySQL लॉगिंग कैसे सक्षम करें?


36

मैं OS X 10.6.1 पर MySQL 5.0.45 चला रहा हूं और मुझे कुछ भी लॉग करने के लिए MySQL नहीं मिल सकता है। मैं एक आवेदन डीबग कर रहा हूं और सभी प्रश्नों और त्रुटियों को देखने की जरूरत है।

मैंने etc / my.cnf में जोड़ा:

[mysqld]
bind-address = 127.0.0.1
log = /var/log/mysqld.log
log-error = /var/log/mysqld.error.log

मैंने दो लॉग फ़ाइलों को बनाने के लिए sudo का उपयोग किया, 644 के लिए अनुमतियाँ सेट कीं, फिर MySQL पुनः आरंभ किया।

मैंने कहा कि ओएस एक्स पर मेरा mysql लॉग कहां है? समस्या निवारण के लिए।

चल रहा है:

ps auxww|grep [m]ysqld

यह दिखाता है:

_mysql      71   0.0  0.8   646996  15996   ??  S     7:31PM   0:01.10 /usr/local/mysql/libexec/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/var --pid-file=/usr/local/mysql/var/Macintosh-41.local.pid
_mysql      46   0.0  0.0   600336    744   ??  Ss    7:30PM   0:00.03 /bin/sh /usr/local/mysql/bin/mysqld_safe

और चल रहा है:

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

यह दिखाता है:

log                               /var/log/mysqld.log
log-bin                           (No default value)
log-bin-index                     (No default value)
log-bin-trust-function-creators   FALSE
log-bin-trust-routine-creators    FALSE
log-error                         /var/log/mysqld.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

चल रहा है:

mysql> show variables like '%log%';

यह दिखाता है:

+---------------------------------+---------------------------+
| Variable_name                   | Value                     |
+---------------------------------+---------------------------+
| back_log                        | 50                        | 
| binlog_cache_size               | 32768                     | 
| expire_logs_days                | 0                         | 
| innodb_flush_log_at_trx_commit  | 1                         | 
| innodb_locks_unsafe_for_binlog  | OFF                       | 
| innodb_log_arch_dir             |                           | 
| innodb_log_archive              | OFF                       | 
| innodb_log_buffer_size          | 1048576                   | 
| innodb_log_file_size            | 5242880                   | 
| innodb_log_files_in_group       | 2                         | 
| innodb_log_group_home_dir       | ./                        | 
| innodb_mirrored_log_groups      | 1                         | 
| log                             | ON                        | 
| log_bin                         | OFF                       | 
| log_bin_trust_function_creators | OFF                       | 
| log_error                       | /var/log/mysqld.error.log | 
| log_queries_not_using_indexes   | OFF                       | 
| log_slave_updates               | OFF                       | 
| log_slow_queries                | OFF                       | 
| log_warnings                    | 1                         | 
| max_binlog_cache_size           | 4294967295                | 
| max_binlog_size                 | 1073741824                | 
| max_relay_log_size              | 0                         | 
| relay_log_purge                 | ON                        | 
| relay_log_space_limit           | 0                         | 
| sync_binlog                     | 0                         | 
+---------------------------------+---------------------------+
26 rows in set (0.00 sec)

मैं लॉग इन करने के लिए MySQL कैसे प्राप्त कर सकता हूँ इस पर कोई मदद?

जवाबों:


23

भले ही आपने उपयोग किया हो chmod 644, सुनिश्चित करें कि mysql लॉग्स का मालिक है।

touch /var/log/mysql.log
chown mysql:mysql /var/log/mysql.log
touch /var/log/mysql.error.log
chown mysql:mysql /var/log/mysql.error.log

इसके बाद, mysqld को पुनरारंभ करें।

फिर, mysql में लॉग इन करें और चलाएं:

mysql> show variables like '%log%';

के लिए मूल्यों को देखो general_log, general_log_file, log, log_error, आदि

आवश्यकतानुसार उन्हें स्विच करें और आवश्यकतानुसार mysqladmin flushlog चलाएं


अब लॉगिंग है। स्वामित्व की निगरानी होनी चाहिए। यद्यपि, "% log% '" क्वेरी जैसे शो चर के परिणामों के लिए मेरा संपादित प्रश्न देखें। MySQL /var/log/mysql.log पर लॉग इन कर रहा है, तो यह क्यों नहीं दिखाता है?
RyOnLife

13

लॉग फ़ाइलों को सक्षम करने के लिए, आपको यह सुनिश्चित करने की आवश्यकता है कि निम्नलिखित निर्देशों में से एक या अधिक [mysqld]आपके mysql सर्वर के मुख्य कॉन्फ़िगरेशन फ़ाइल ( /etc/my.cnfमेरा पर) के अनुभाग में हैं :

[mysqld]
log-bin
log
log-error
log-slow-queries

लॉग्स डिफ़ॉल्ट रूप से, उसी डेटा निर्देशिका में बनाए जाएंगे जो डेटाबेस उपनिर्देशिका स्वयं (आमतौर पर /var/lib/mysql) रखती है और लॉग फ़ाइल होस्टनाम के लिए डिफ़ॉल्ट रूप से एक प्रत्यय के बाद होती है जो ऊपर दिए गए निर्देश नामों से मेल खाती है (जैसे। -bin, -slow -सीरीज़, आदि)।

अपने लॉग को एक अलग पथ में रखने के लिए, या विभिन्न फ़ाइल नाम का उपयोग करके, log=निर्देश के बाद आधार नाम निर्दिष्ट करें , और कोई भी पथ और फ़ाइल नाम जिसे आप पसंद करते हैं:

[mysqld]
log-bin=/var/log/mysql-bin.log
log=/var/log/mysql.log
log-error=/var/log/mysql-error.log
log-slow-queries=/var/log/mysql-slowquery.log

इन परिवर्तनों को प्रभावी करने के लिए आपको mysqld को पुनरारंभ करना होगा।


5

पिछले उत्तर दिनांकित थे। आप कॉन्फ़िगरेशन फ़ाइल /etc/my.cnfको विंडो में या उस पर देख सकते हैं ./mysql/my.ini

में [mysqld]खंड जोड़ने

log_bin
general_log
log_error

विंडोज़ के लिए प्रलेखन में कहा गया है कि लॉग जमा हो जाते हैं ProgramData/MySQL/MySQL Server 5.6/। इसे अनदेखा करें क्योंकि यह झूठ है।

इसके अलावा अनुशंसित logविकल्प को ह्रास किया गया है और त्रुटि का परिणाम है

ambiguous option '--log' (log-bin, log_slave_updates)

लॉग इन किया जा रहा है ./mysql/data/host.errऔर डेमन चुपचाप मर रहा है। सही सेटिंग है general-log

भी log-slow-queriesमान्य नहीं है और त्रुटि का कारण है

C:\mysql\bin\mysqld.exe: unknown option '--log-slow-queries'

इसलिए उससे भी दूर रहना निश्चित है।


धन्यवाद! मैं log=विकल्प के साथ सर्वर शुरू नहीं कर सका और मेरे जीवन के लिए यह पता लगा सका कि क्यों। अंत में जवाब के साथ कोई। general-log
jiveturkey

2

सुपर विशेषाधिकार के साथ mysql कमांड लाइन डालें और प्रदर्शन करें:

SET GLOBAL general_log_file = '/var/log/mysql/mysql.log'; 

मेरे मामले में, इससे कोई फर्क नहीं पड़ता कि मेरे पास यह चर पहले से ही समान मूल्य के साथ सेट है! साथ ही, मैंने अन्य पोस्ट में बताई गई अनुमतियों और फ़ाइल के स्वामी को बदल दिया।


1

My.cnf में विभिन्न लॉग सेटिंग्स आज़माएँ। मेरे मामले में मुझे ज़रूरत थी:

general_log = on

general_log_file=/var/log/mysql/mysql.log
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.