पासवर्ड को उजागर किए बिना एक क्रॉन नौकरी में mysql डंप चलाना


11

मैं दौड़ना चहता हूँ

mysqldump -u aUser -p P4SSw0rd --all-databases > backup.sql

क्रॉन जॉब में। मैं इतना सुरक्षित रूप से कैसे कर सकता हूं?

मुझे पता है कि मैं कमांड को वहीं रख सकता हूं, लेकिन मशीन तक पहुंच रखने वाला कोई भी व्यक्ति इसे सीधे कॉट्रैब के माध्यम से देखेगा। इसे करने का कोई बेहतर तरीका है?


1
आपका उदाहरण गलत है, यह -PP4SSw0rd होना चाहिए जिसमें कोई स्थान नहीं है।
साइमन वुडसाइड

जवाबों:


14

जैसा कि कहा गया है man mysqldump: 6.1.2.1 देखें MySQL संदर्भ मैनुअल में पासवर्ड सुरक्षा के लिए अंतिम-उपयोगकर्ता दिशानिर्देश

एक विकल्प फ़ाइल सबसे सुरक्षित शर्त है, जो उपरोक्त संदर्भ के अनुसार कम से कम नहीं है। Crontab में प्लेनटेक्स्ट में देना अच्छा नहीं है, कम से कम नहीं है क्योंकि डिफ़ॉल्ट रूप से प्रक्रिया कमांड लाइन psअन्य उपयोगकर्ताओं के लिए दिखाई देती है । वास्तव में पर्यावरण चर के लिए लागू होता है जैसा कि संदर्भ में बताया गया है।

MySQL संदर्भ मैनुअल का प्रासंगिक भाग:

एक विकल्प फ़ाइल में अपना पासवर्ड स्टोर करें। उदाहरण के लिए, यूनिक्स पर, आप अपने होम डायरेक्टरी में फ़ाइल के [client]अनुभाग में अपना पासवर्ड सूचीबद्ध कर सकते हैं .my.cnf:

[client]
password=your_pass

पासवर्ड को सुरक्षित रखने के लिए, फ़ाइल को किसी और के लिए सुलभ नहीं होना चाहिए। यह सुनिश्चित करने के लिए, फ़ाइल एक्सेस मोड को 400या पर सेट करें 600। उदाहरण के लिए:

shell> chmod 600 .my.cnf

कमांड लाइन से एक विशिष्ट विकल्प फ़ाइल का नाम रखने के लिए, पासवर्ड का उपयोग करें --defaults-file=file_name, जहां file_nameफ़ाइल का पूरा पथ नाम है। उदाहरण के लिए:

shell> mysql --defaults-file=/home/francis/mysql-opts

धारा 4.2.3.3, "विकल्प फ़ाइलों का उपयोग करना" , विकल्प फ़ाइलों पर अधिक विस्तार से चर्चा करता है।

इसके अलावा /programming//q/10725209 देखें


ऐसा लगता है कि ps कमांड एक x: ps: mysqldump -uroot -px xx adb के साथ पासवर्ड को बाधित करता है। मैं यह नहीं कह रहा हूं कि यह एक अच्छा संरक्षण है (यदि आप नौकरी टाइप करते हैं, तो पासवर्ड सादे पाठ में प्रकट होता है)।
ling

4

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

PASS=`cat /path/to/pwdfile`

 mysqldump -u aUser -p $PASS--all-databases > backup.sql

इसलिए यदि क्रोनजॉब उपयोगकर्ता के 'उदाहरण' के रूप में चलता है, तो फ़ाइल का स्वामित्व "उदाहरण: उदाहरण" होना चाहिए और 0400 की अनुमति होनी चाहिए।

आप उपयोगकर्ता-स्तर .my.cnf का उपयोग करके एक समान फ़ंक्शन भी प्राप्त कर सकते हैं ।


1
read PASS < /path/to/pwdfileएक ही काम करने के लिए एक मुहावरेदार क्लीनर है (यकीनन मुझे लगता है; सुपरयुसर . com/q/323060/49182 लागू होता है)।
डैनियल एंडरसन 10

* "ए.एन. मुहावरेदार क्लीनर रास्ता है" ... संपादन में खो गया।
डैनियल एंडरसन

बैश की सबसे बुनियादी समझ के साथ किसी को यह देखने में सक्षम होना चाहिए कि उस बिल्ली के साथ क्या हो रहा है। :)
गैरेट

1
सच है, मैं यह भी कहूंगा कि यह करने का सबसे आम तरीका है, लेकिन यह अभी भी एक आंखों की रोशनी :-) है। यदि कोई यूयूओसी को एक आदत बनाता है तो यह फ़ाइल से बड़ा होने पर काटेगाARGMAX , यह एक शेल-इन का उपयोग करने के बजाय एक अतिरिक्त प्रक्रिया लेता है, यह निर्माणों for i in `cat file`; do ...को अपनी समस्याओं की तरह से लुभा सकता है, आदि, लेकिन निश्चित रूप से, जैसा कि अधिकांश चीजों के साथ: यदि कोई जानता है कि जो हो रहा है वह एक के रूप में करने के लिए स्वतंत्र है, तो वह चुनता है। मैं यहाँ एक धर्मयुद्ध पर नहीं हूँ, चाहे वह कैसा भी दिखाई दे: -D।
डैनियल एंडरसन

0

मशीन तक पहुंच वाले किसी भी व्यक्ति के पास उसी स्तर की पहुंच होती है, /var/spool/cron/crontabs/जितनी /var/lib/mysqlआप उन्हें अनुमति देते हैं। तो, निर्देशिकाओं पर उचित अनुमतियाँ सेट करें और किया। रूट-एक्सेस वाले किसी व्यक्ति के पास सीधे डेटाबेस फ़ाइलों तक सीधी पहुंच है। जिस किसी पर भी आपको मशीन की पहुँच का भरोसा नहीं है, उसे मशीन तक पहुँच नहीं होनी चाहिए।

आमतौर पर लोग केवल अपने खुद के क्रॉन्ज को देखते हैं crontab -l


0

बैकअप उद्देश्यों के लिए, mysql में केवल-पढ़ने वाला उपयोगकर्ता होने पर विचार करें, जैसे

CREATE USER bUser IDENTIFIED BY 'p4ss';

GRANT SELECT ON *.* TO bUser@localhost;
GRANT LOCK TABLES ON *.* TO bUser@localhost;

mysqldump को अपना काम करने के लिए केवल SELECTऔर LOCK TABLESविशेषाधिकारों की आवश्यकता होती है ।

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