MySQL लॉगिन प्रयास लॉग करें


25

समय-समय पर हमारे MySQL उत्पादन सर्वर में विफल लॉगिन प्रयास होते हैं (MySQL डैशबोर्ड अलर्ट हमें)। क्या बिना सक्षम किए MySQL सर्वर पर हर एक सफलता और असफल लॉगिन को लॉग इन करने का एक तरीका है general_log?

हमें लगता general_logहै कि उच्च भार के साथ उत्पादन सर्वर होने के कारण यह एक विकल्प नहीं है।


1
मारियाडीबी ऑडिट प्लगइन का उपयोग करने पर विचार करें mariadb.com/resources/blog/… mariadb.com/kb/en/mariadb/about-the-mariadb-audit-plugin
Mersh

Mysql के अधिकारी के अनुसार: As of MySQL 5.5.28, MySQL Enterprise Edition includes MySQL Enterprise Audit, implemented using a server plugin named audit_log. केवल उद्यमी संस्करण ही है।
टिआना

जवाबों:


20

बस जिज्ञासु को सूचित करने के लिए: अपनी त्रुटि लॉग और प्रेस्टो में खोदें!

(1)। my.cnf को संपादित करें (सेटिंग्स दस्तावेज़ यहां पाया गया )

[Mysqld]

: # त्रुटि लॉग फ़ाइल के लिए एक नाम लिखें। अन्यथा एक डिफ़ॉल्ट नाम का उपयोग किया जाएगा।

log_error = / var / log / mysql / त्रुटि

: #defaults to 1. यदि मान> 1 है, तो निरस्त कनेक्शन और नए कनेक्शन प्रयासों के लिए एक्सेस-अस्वीकृत त्रुटियों को त्रुटि लॉग में लिखा गया है

log_warnings = 2

...

(2)। कमांड रन पर

$ sudo cat /var/log/mysql/error.err | egrep '[aA] ccess से इनकार किया'

(3)। और आपके पास है!

(4)। यदि आपको उपयोगकर्ता (डॉस हमले या mysql उपयोगकर्ता पासवर्ड को बहु उपयोगकर्ता डेटाबेस में पुनर्प्राप्त करने का प्रयास) को प्रतिबंधित करने की आवश्यकता है, तो ( http://dev.mysql.com/doc/refman/5.5/en/user-resources.html )

mysql> अनुदान का उपयोग करें *। * MAX_CONNECTIONS_PER_HOUR 100 के साथ हमलावर @ @ 'लोकलहोस्ट' को;

प्रति घंटे केवल 100 पासवर्ड पुनर्प्राप्त करने के लिए प्रतिबंधित करने के लिए।


2

मुझे लगता है कि सामान्य लॉग कई अन्य चीजों के बीच सभी लॉगिन प्रयासों (सफलता और असफलता) को लॉग कर सकता है। मुख्य समस्या यह है कि सामान्य लॉग आपके डेटाबेस के प्रदर्शन को प्रभावित करेगा। आप क्वेरी के साथ सामान्य लॉग ऑन कर सकते हैं

SET GLOBAL general_log = 'on'

MySQL के नए संस्करणों के लिए।


यह अस्थायी या स्थायी है ?, यदि यह अस्थायी है, तो इसका मतलब है कि मुझे /etc/mysql/my.cnfmysql को संशोधित करने की आवश्यकता है ?
डार्केब्लज़ेर

अल्पकालिक होता है। वह तरीका काम कर सकता है, या --general-logजब आप MySQL शुरू करते हैं तो आप झंडे में जोड़ सकते हैं ।
rmc00

1

नमस्ते, मुझे नहीं लगता कि यह संभव है।

Mysql 5.1.29 के अनुसार - आप भंडारण विकल्प (तालिका या फ़ाइल) और स्थान निर्दिष्ट कर सकते हैं और जो लॉग आप चाहते हैं - त्रुटि, सामान्य, द्विआधारी या धीमी क्वेरी। जहां तक ​​मुझे पता है - आप लॉग के प्रारूप को निर्दिष्ट नहीं कर सकते हैं या लॉग क्या हो जाता है। मैं गलत हो सकता हूं - लेकिन मुझे लगता है कि सभी लॉगिन अटैम्प्ट सामान्य लॉग में लॉग किए जाएंगे, और त्रुटि एक नहीं।

हालाँकि, मान लें कि आपका mysql सर्वर एक अलग मशीन पर चल रहा है, आप applicaiton सर्वर से, और आपको पोर्ट 3306 (या जो कुछ भी खुले) की आवश्यकता है और आप ssh सुरंग का उपयोग नहीं कर सकते हैं, आप mysql सर्वर अभी भी किसी के लिए भी सुलभ नहीं होना चाहिए- समझे। मैं अत्यधिक सलाह देता हूं कि इसे वेब ट्रैफ़िक में उजागर न करें, और यदि आपको (जैसे कि आपके फ़ायरवॉल के पीछे कहीं नहीं रहने के मामले में) इसे आईपी पते या आपके एप्लिकेशन सर्वर के आईपी ब्लॉक या आपके एडमिन एक्सेस आईपी (जहां आप हैं) से जोड़ दें से पहुंच)

उम्मीद है की वो मदद करदे।


1

एक mysql-ऑडिट-प्लगइन का उपयोग करके लॉग इन connectऔर quitकमांड कर सकता है ।

  1. Mysql-ऑडिट-प्लगइन रिलीज़ से सही संस्करण ढूंढें , मैंने mysql 5.7 का उपयोग किया, इसलिए मैंने उपयोग किया audit-plugin-percona-5.7-1.1.7-805-linux-x86_64.zip
  2. डाउनलोड की गई soफ़ाइल को दिए गए स्थान पर स्थानांतरित करें mysqladmin variables | grep plugin_dir
  3. mysql>install plugin audit soname 'libaudit_plugin.so'
  4. लॉग फ़ंक्शन को चालू करना, mysql>set global audit_json_file=ONडिफ़ॉल्ट रूप से यह सभी सफल संचालन को लॉग करता है। mysql-ऑडिट-प्लगइन कॉन्फ़िगरेशन केset global audit_record_cmds='quit,connect' अनुसार, इसे सेट करने से केवल लॉग कनेक्ट होता है और मैं मान लेता हूं ।

यह लॉगिन और लॉगआउट के लिए फ़ाइल में कैसा दिखता है:

{"msg-type":"activity","date":"1543740612328","thread-id":"1015112","query-id":"3045222","user":"root","priv_user":"skip-grants user","ip":"172.28.15.10","host":"172.28.15.10","connect_attrs":{"_os":"Linux","_client_name":"libmysql","_pid":"11575","_client_version":"5.6.40","_platform":"x86_64","program_name":"mysql"},"cmd":"Quit","query":"Quit"} 

{"msg-type":"activity","date":"1543740724627","thread-id":"1015113","query-id":"0","user":"root","priv_user":"skip-grants user","ip":"172.28.15.10","host":"172.28.15.10","connect_attrs":{"_os":"Linux","_client_name":"libmysql","_pid":"11863","_client_version":"5.6.40","_platform":"x86_64","program_name":"mysql"},"cmd":"Connect","query":"Connect"}
{"msg-type":"activity","date":"1543740724629","thread-id":"1015113","query-id":"3045223","user":"root","priv_user":"skip-grants user","ip":"172.28.15.10","host":"172.28.15.10","connect_attrs":{"_os":"Linux","_client_name":"libmysql","_pid":"11863","_client_version":"5.6.40","_platform":"x86_64","program_name":"mysql"},"rows":"1","status":"0","cmd":"select","query":"select @@version_comment limit 1"}

0

यदि प्रश्न में सर्वर को बाहरी कनेक्शन नहीं होना चाहिए, तो कॉन्फ़िगर के रूप में, मैं आपके ऐप सर्वर के खिलाफ किसी प्रकार के हमले के बारे में चिंतित होऊंगा, जब तक कि विफल लॉगइन नए एप्लिकेशन से नहीं होते हैं जब उपयोगकर्ता / पास को कॉन्फ़िगर किया गया हो।

यदि सर्वर किसी तरह से 3306 पर बाहरी कनेक्शन के संपर्क में है, जब तक कि यह जानबूझकर और आवश्यक नहीं है, तो मैं कॉन्फ़िगरेशन को सेट कर दूंगा जैसा कि निक ने कहा था, और केवल अपने ऐप सर्वर से 3306 पर ट्रैफ़िक को प्रतिबंधित करने के लिए iptables का उपयोग करना भी देखें।


MySQL स्वचालित रूप से IP पते से उन कनेक्शनों से इनकार करता है जिनमें mysql.user में कम से कम एक मिलान पंक्ति नहीं है
डेविड एम

0

पर http://www.mysqlperformanceblog.com/2008/11/07/poor-mans-query-logging/ , लेखक tcpdump उपयोग कर, और छानने स्ट्रिंग के आधार पर उत्पादन के पैकेट पर कब्जा करने के लिए एक विधि को दर्शाता है।

यह सामान्य_लॉग और प्रदर्शन के बारे में आपकी चिंताओं के आसपास काम करता है, हालांकि tcpdump स्वयं एक मामूली प्रदर्शन जुर्माना लगा सकता है। यह समाधान भी कम डेटा लॉग करेगा फिर सामान्य क्वेरी लॉग।

मैंने खुद इसका इस्तेमाल नहीं किया है, लेकिन यह बहुत उपयोगी लगता है।


अच्छा लगता है, लेकिन लिंक मेरे लिए काम नहीं करता है।
कार्लोस

यह लिंक फ़ायरफ़ॉक्स का उपयोग करके आज सुबह मेरे लिए काम करता है। mysqlperformanceblog.com/2008/11/07/poor-mans-query-logging
स्टीफन Lasiewski

और मैं इस के साथ अपने अनुभव को सुनने में दिलचस्पी होगी।
स्टीफन लासिवस्की
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.