डेबियन-सीस-मेन्ट MySQL उपयोगकर्ता (और अधिक) क्या है?


71

मुझे कई बार 'debian-sys-maint' उपयोगकर्ता द्वारा काट लिया गया है जो उबंटू रिपॉजिटरी से स्थापित mysql-server संकुल पर डिफ़ॉल्ट रूप से स्थापित है।

आम तौर पर क्या होता है मैं समस्या निवारण या नए विकास के लिए हमारे उत्पादन डेटाबेस (जो डेबियन / उबंटू पर नहीं चल रहा है) की एक नई प्रतिलिपि खींचता हूं और mysql.user तालिका को बाहर करना भूल जाता हूं, इसलिए डेबियन-सीस-मेन्ट उपयोगकर्ता खो देता है।

यदि हम किसी भी कारण से नए mysql उपयोगकर्ताओं को जोड़ते हैं, तो मुझे टेबल को ओवरले करने के विपरीत अपने विकास परिवेश में इनका विलय करना होगा।

उपयोगकर्ता के बिना मेरी प्रणाली अभी भी कार्यात्मक लगती है, लेकिन त्रुटियों से ग्रस्त है जैसे:

sudo /etc/init.d/mysql restart
Stopping MySQL database server: mysqld...failed.
error: 'Access denied for user 'debian-sys-maint'@'localhost' (using password: YES)'
  • डेबियन-सीस-मेन्ट किसके लिए उपयोग किया जाता है?
    • क्या पैकेज अनुरक्षकों के लिए एक बेहतर तरीका है कि वे क्या करने की कोशिश कर रहे हैं?
  • इसे खो देने के बाद इसे पुनर्स्थापित करने का सबसे आसान तरीका क्या है?
  • इस उपयोगकर्ता के लिए विशेषाधिकारों का सही / न्यूनतम सेट क्या है?
    • '*। * ...' पर सभी विशेषाधिकार प्रदान करने के लिए खराब विचार की तरह लगता है

संपादित करें

अतिरिक्त प्रश्न - क्या /etc/mysql/debian.cnf में पासवर्ड पहले से ही हैशेड है या यह प्लेनटेक्स्ट पासवर्ड है? यह तब मायने रखता है जब आप उपयोगकर्ता को पुनः बनाने के लिए जाते हैं और मुझे लगता है कि यह पहली कोशिश में सही नहीं लगता।

धन्यवाद


8
पासवर्ड /etc/mysql/debian.cnf में प्लेनटेक्स्ट है
ब्रेंट

जवाबों:


57

डेबियन-सीस-मेन्ट किसके लिए उपयोग किया जाता है?

इसके लिए उपयोग की जाने वाली एक प्रमुख चीज सर्वर को लॉग को रोल करने के लिए कह रही है। इसे कम से कम रीलोड और शटडाउन विशेषाधिकार की आवश्यकता है।

फ़ाइल देखें /etc/logrotate.d/mysql-server

इसका उपयोग /etc/init.d/mysqlस्क्रिप्ट द्वारा सर्वर की स्थिति प्राप्त करने के लिए किया जाता है । इसका उपयोग सर्वर को शटडाउन / रीलोड करने के लिए किया जाता है।

यहाँ README.Debian का उद्धरण है

* MYSQL WON'T START OR STOP?:
=============================
You may never ever delete the special mysql user "debian-sys-maint". This user
together with the credentials in /etc/mysql/debian.cnf are used by the init
scripts to stop the server as they would require knowledge of the mysql root
users password else.

इसे खो देने के बाद इसे पुनर्स्थापित करने का सबसे आसान तरीका क्या है?

सबसे अच्छी योजना बस इसे खोना नहीं है। यदि आप वास्तव में पासवर्ड खो देते हैं, तो इसे रीसेट करें, दूसरे खाते का उपयोग करके। यदि आपने mysql सर्वर पर सभी व्यवस्थापक विशेषाधिकारों को खो दिया है, तो रूट पासवर्ड को रीसेट करने के लिए गाइड का पालन करें, फिर मरम्मत करें debian-sys-maint

SQL फ़ाइल बनाने के लिए आप इस तरह की कमांड का उपयोग कर सकते हैं जिसे आप बाद में खाते को फिर से बनाने के लिए उपयोग कर सकते हैं।

mysqldump --complete-insert --extended-insert=0 -u root -p mysql | grep 'debian-sys-maint' > debian_user.sql

/Etc/mysql/debian.cnf में पासवर्ड पहले से ही हैशेड है

स्थापित होने पर पासवर्ड हैशेड / एन्क्रिप्टेड नहीं होता है, लेकिन mysql के नए संस्करणों में अब क्रेडेंशियल एन्क्रिप्ट करने का एक तरीका है (देखें: https://serverfault.com/a/750363 )।


1
"सबसे अच्छी योजना बस इसे खोना नहीं है।" गंभीरता से? यह उन लोगों के लिए शून्य मदद है जो पहले से ही इसे खो चुके हैं जैसा कि मैंने स्पष्ट रूप से एक उन्नयन के दौरान किया था। उन लोगों के लिए, जिन्हें उपयोगकर्ता को फिर से बनाने की आवश्यकता है, अन्य उत्तरों में "GRANT ALL" विकल्पों में से एक का उपयोग करें, क्योंकि यह उपयोगकर्ता केवल लॉगऑरेट संचालन के लिए उपयोग नहीं किया जाता है - यह अपग्रेड प्रक्रिया का एक महत्वपूर्ण हिस्सा है।
FKEinternet

यदि आप क्रेडेंशियल खो देते हैं, तो आपके पास हमेशा विकल्प होता है, केवल mysql / mariadb डेमन को शुरू करने के विकल्प के साथ जो अनुमतियाँ सिस्टम को स्किम करता है, या रूट mysql विशेषाधिकारों के साथ किसी अन्य उपयोगकर्ता के रूप में लॉग इन करता है और पासवर्ड रीसेट करता है। पासवर्ड रीसेट करना, और विशेषाधिकार प्रणाली को दरकिनार करना Google और इस साइट पर अन्य सवालों के अन्य स्थानों में अच्छी तरह से प्रलेखित है।
ज़ेडाचे

22

डेबियन-सिस-maint उपयोगकर्ता डिफ़ॉल्ट रूप से एक है जड़ बराबर । यह डेबियन सिस्टम पर कुछ रखरखाव लिपियों द्वारा उपयोग किया जाता है, और साइड-इफेक्ट के रूप में, बॉक्स पर रूट एक्सेस वाले उपयोगकर्ताओं को /etc/mysql/debian.cnf (अच्छा या बुरा?) में प्लेटेक्स्ट पासवर्ड देखने की अनुमति देता है?

आप उपयोगकर्ता को फिर से बना सकते हैं:

GRANT ALL PRIVILEGES on *.* TO `debian-sys-maint`@`localhost` IDENTIFIED BY 'your password' WITH GRANT OPTION;

बस सुनिश्चित करें कि पासवर्ड /etc/mysql/debian.cnf में मेल खाता है


9
पुनः (अच्छा या बुरा) - यदि कोई व्यक्ति रूट बनने का प्रबंधन करता है तो वे केवल सही विकल्पों के साथ सर्वर को पुनः आरंभ करके पूरी तरह से विशेषाधिकार प्रणाली को बायपास कर सकते हैं। यदि आप किसी हमलावर को रूट करते हैं, तो आपको संभवतः बड़ी समस्या है तो वह कॉन्फ़िगरेशन फ़ाइल।
ज़ॉडेचेस

2
यह भी फिर से: अच्छा या बुरा - मुझे MySQL रूट खाता पासवर्ड को फिर से सेट करने के लिए डेबियन-एसआईएस-मेन्ट एक्सेस पर भरोसा करना पड़ता है जब इसे भुला दिया गया था। यह कमबैक विकल्प होने से अच्छा था।
ब्रेंट

1
@Bent: mysql रूट पासवर्ड को रीसेट करने के लिए dev.mysql.com/doc/refman/5.0/en/resetting-permissions.html देखें । मैंने इस उपयोगकर्ता को डेबियन पर कई mysql इंस्टॉल पर अक्षम कर दिया है क्योंकि यह बड़े तालिकाओं के साथ तालिकाओं की जाँच के साथ स्टार्टअप पर कहर पैदा कर सकता है।
नाथन

1
नाथन, उस लिंक के लिए धन्यवाद। मेरे लिए यह नई जानकारी है। यदि आपके पास डेबियन-सीस-मेन्ट खाते को पूरी तरह से अक्षम करने की एक प्रक्रिया है, तो आप इसे एक अलग उत्तर के रूप में यहां क्यों शामिल नहीं करते हैं। वह महान होगा!
ब्रेंट

3
एक बेहतर अनुदान सिर्फ शटडाउन / स्टार्टअप विशेषाधिकार देने के लिए होगा।
jmtd

19

आप यह भी कर सकते हैं:

sudo dpkg-reconfigure mysql-server-5.0

जो आपको debian-sys-maint उपयोगकर्ता को फिर से बनाने का विकल्प देगा। मौजूदा उपयोगकर्ता और डेटाबेस सुरक्षित हैं।


इसने mysql-server-5.5 पर भी काम किया।
सर्वरसेंटिनल

यह केवल तभी काम करेगा जब आपका mysql- सर्वर इंस्टॉलेशन टूटा न हो - जैसा कि हो सकता है यदि डेबियन-एसआईएस-मेन्ट उपयोगकर्ता गायब है।
FKEinternet

19

मैं सिर्फ टिप्पणी करना चाहता था, लेकिन मुझे लगता है कि सही वाक्यविन्यास के हकदार हैं यह अपनी प्रविष्टि है। यह डेबियन-सीस-मेन्ट उपयोगकर्ता बनाएगा :

mysql> GRANT ALL PRIVILEGES on *.* TO 'debian-sys-maint'@'localhost' IDENTIFIED BY 'plaintextpassword' WITH GRANT OPTION; FLUSH PRIVILEGES;

यदि आपके पास अभी भी /etc/mysql/debian.cnf फ़ाइल है, तो वहां पासवर्ड का उपयोग करें।

एक और अधिक के साथ आने के लिए स्वतंत्र महसूस पागल सुरक्षित समाधान।


1
यह उतना ही पागल है जितना कि इसे होने की जरूरत है। तब केवल वह फ़ाइल /etc/mysql/debian.cnfफ़ाइल पढ़ने में सक्षम होना चाहिए जो लिनक्स rootउपयोगकर्ता हैं। और जब कोई उस फ़ाइल को पढ़ सकता है, तो उनके पास पहले rootसे ही मशीन तक पहुंच है और MySQL सर्वर को रोक सकता है और अपने स्वयं के एक सिस्टम एडमिन को जोड़ सकता है। और MySQL और अन्य पैकेज शुरू करने वाली स्क्रिप्ट सुरक्षा रखरखाव और अन्य रखरखाव नहीं कर सकती है। तो हाँ, यह उतना ही सुरक्षित है जितना कि कभी होना चाहिए। और उपयोगी है अगर आप इसे ठीक करने के लिए असुरक्षित मोड में पुनः आरंभ करने की आवश्यकता के बिना MySQL व्यवस्थापक पासवर्ड को ढीला करते हैं। ;-)
एंडर्स

यही संपादन के लिए है।
रॉबिनज

6

यदि आपको debian-sys-maintउपयोगकर्ता को सिर्फ logrotate.dउद्देश्यों के लिए जोड़ना है, तो आपको अनुदान नहीं देना चाहिए ALL PRIVILEGESया GRANT OPTION- यह एक अनावश्यक विशाल सुरक्षा छेद है। इसके बजाय, आप उपयोगकर्ता को RELOADइस तरह विशेषाधिकार के साथ जोड़ सकते हैं (यह मानते हुए कि आप अपने db तक पहुँच रहे हैं root, और आप xxxxxx को अपने पासवर्ड से बदल दें)

# add the user with the reload right
GRANT RELOAD on *.* TO 'debian-sys-maint'@'localhost' IDENTIFIED BY 'xxxxxx'; 

# reload the rights
FLUSH PRIVILEGES;

# double check
select * from mysql.user;

2019 अपडेट

यह उत्तर पुराना हो सकता है - कृपया नीचे दिए गए जोरदार राय देखें।


यह एकल सुरक्षित उत्तर है, यह केवल आवश्यक अनुमतियों को अनुदान देता है debian-sys-maint। इसके अलावा, मैं पुष्टि कर सकता हूं कि यह एक आकर्षण की तरह काम करता है। चीयर्स!
जेले

2
क्या यह वास्तव में एक सुरक्षा छेद है? यदि कोई पहले से ही /etc/mysql/debian.cnf पढ़ सकता है, तो उनके पास निश्चित रूप से रूट एक्सेस है, और वैसे भी --skip-अनुदान-तालिकाओं के साथ mysql को पुनरारंभ कर सकते हैं।
mc0e 13

धन्यवाद। लेकिन दो बार चीजों को फ्लश करने की आवश्यकता नहीं है, MySQL पहले से ही जानता है कि GRANT कमांड क्या करता है। Dev.mysql.com/doc/refman/5.6/en/privilege-changes.html
ygoe

1
और यह काम नहीं करेगा, क्योंकि debian-sys-maintउपयोगकर्ता का उपयोग सर्वर को बंद करने के लिए भी किया जाता है। और mysql सर्वर शुरू करते समय रूट यूजर्स के लिए भी जाँच करें। तो आपको कम से कम mysql। * और शटडाउन विशेषाधिकारों का चयन करने की आवश्यकता है।
एंडर्स

1
NO NO NO, इस उत्तर की सलाह का पालन न करें - आपको "debian-sys-maint आवश्यक अनुमतियों" शीर्षक वाले अन्य उत्तर में उल्लिखित कारणों के लिए सभी निजी लोगों को debian-sys-maint को देने की आवश्यकता है। संक्षेप में, आप दिन-प्रतिदिन ठीक हो सकते हैं, लेकिन जब आप किसी सुरक्षा अद्यतन, पैच, या अपने सिस्टम को अपग्रेड करते हैं, तो गंभीर समस्याओं में भाग सकते हैं।
कर्ट फिट्जनेर

3

के बजाय

GRANT ALL PRIVILEGES on *.* TO 'debian-sys-maint'@'localhost' IDENTIFIED BY PASSWORD('your password') WITH GRANT OPTION; FLUSH PRIVILEGES;

मुझे लगता है

GRANT ALL PRIVILEGES on *.* TO 'debian-sys-maint'@'localhost' IDENTIFIED BY 'your password' WITH GRANT OPTION; FLUSH PRIVILEGES;

क्योंकि पासवर्ड हैशेड नहीं है ...?


3

debian-sys-maint आवश्यक अनुमतियां

अन्य उत्तरों ने डेबियन-एसआईएस-मेन्ट उपयोगकर्ता के लिए आवश्यक अनुमतियों के न्यूनतम सेट को छोड़कर पर्याप्त रूप से सब कुछ संबोधित किया है। यहाँ बहुत से उत्तर उस संबंध में गलत हैं, और वास्तव में खतरनाक हैं। नीचे पढ़ें और समझ के बिना डेबियन-सीस-मेन्ट विशेषाधिकार (अनुदान विकल्प सहित) को कम न करें:

डेबियन अनुरक्षक ने उपयोगकर्ता को विशेष रूप से सभी विशेषाधिकार नहीं दिए। यहाँ क्या आवश्यक है, कहाँ और क्यों है। इन विशेषाधिकारों में से कुछ दूसरों के सुपरसेट हैं, लेकिन मैं उन्हें स्वतंत्र रूप से सूचीबद्ध करूँगा, यदि आप चीजों को अनुकूलित करना चाहते हैं और उनके लिए आवश्यकता को हटा सकते हैं:

  • शटडाउन और पुनः लोड , आवश्यक अनिश्चित, बंद करने के लिए या डेटाबेस करने के लिए, /etc/init.d/mysql द्वारा किया गया
  • mysql.user पर चयन करें , जब डेटाबेस शुरू किया जाता है, तो यह सुनिश्चित करना चाहिए कि रूट उपयोगकर्ता है। फंक्शन में वास्तविक कोड के साथ / etc / mysql / debian-start (/etc/init.d/mysql द्वारा कॉल किया गया) check_root_accounts में फ़ाइल /usr/shaw-mysql/debian-start.inc.shsh
  • information_schema.tables पर चयन , वैश्विक चयन , दुर्घटनाग्रस्त तालिकाओं के लिए जाँच के लिए की आवश्यकता है। फंक्शन में वास्तविक कोड के साथ / etc / mysql / debian-start (जिसे /etc/init.d/mysql कहा जाता है) द्वारा प्रत्येक स्टार्टअप को चेक /for_crashed_tables में /usr-share/mysql/debian-start.inc.shsh
  • वैश्विक सभी विशेषाधिकार , तालिकाओं के उन्नयन के लिए आवश्यक अगर / जब MySQL का एक नया संस्करण अपडेट या डेबियन अपग्रेड के माध्यम से स्थापित किया जाता है। फंक्शन में वास्तविक कोड के साथ / etc / mysql / debian-start (जिसे /etc/init.d/mysql कहा जाता है) द्वारा प्रत्येक अपग्रेड किया गया, file_r/share/mysql/debian-start.inc.sh-sh वास्तव में MySQL बाइनरी mysql_upgrad को कॉल करता है - फ़ंक्शन के नाम (अपग्रेड_सस्टम_टैबल्स_इफ़_नहीं) से मूर्ख मत बनो, यह संभवतः सभी तालिकाओं को छू सकता है - नीचे देखें

अंतिम एक, निश्चित रूप से, विशेषाधिकारों के लिए प्रमुख आवश्यकता है। Mysql_upgrade के लिए वह आदमी पेज बताता है:

mysql_upgrade MySQL सर्वर के वर्तमान संस्करण के साथ असंगतता के लिए सभी डेटाबेस में सभी तालिकाओं की जांच करता है। mysql_upgrade सिस्टम तालिकाओं को भी अपग्रेड करता है ताकि आप नए विशेषाधिकारों या क्षमताओं का लाभ उठा सकें जिन्हें जोड़ा जा सकता था।

यदि mysql_upgrad को पता चलता है कि किसी तालिका में एक असंगतता है, तो यह एक टेबल की जाँच करता है और यदि समस्याएँ पाई जाती हैं, तो तालिका की मरम्मत का प्रयास करता है।

चेतावनी यदि आप उन विशेषाधिकारों पर कटौती करने का निर्णय लेते हैं जो डेबियन-एसआईएस-मेन्ट के पास हैं, तो सुनिश्चित करें कि आप किसी भी भविष्य के डेबियन सुरक्षा अपडेट और / या उन्नयन के लिए तैयार हैं जो MySQL को छूते हैं। यदि आप एक कम डेबियन-सीस-मेन्ट विशेषाधिकार के साथ MySQL पैकेज पर एक अपडेट करते हैं, और यदि mysql_upgrad परिणाम के रूप में पूरा नहीं कर सकता है, तो यह आपके डेटाबेस को अपरिभाषित (टूटी हुई) स्थिति में छोड़ सकता है। जब तक कोई अद्यतन नहीं आता है तब तक विशेषाधिकारों को कम करने में कोई स्पष्ट दिन-प्रतिदिन की समस्याएं नहीं हो सकती हैं, इसलिए इस तथ्य से न जाएं कि आपने पहले से ही कोई हानिकारक प्रभाव वाले विशेषाधिकार कम कर दिए हैं क्योंकि यह सोचने के लिए सुरक्षित है।


विस्तृत जवाब के लिए धन्यवाद। इस सवाल पर यकीन करना मुश्किल है कि यह लगभग 10 साल पुराना है!
जो होलोवे

यह लोगों द्वारा पढ़ी जाने वाली पहली चीजों में से एक होनी चाहिए।
FKEinternet

2

इसके लिए एक साइड नोट के रूप में, इस mysqlperformanceblog पोस्ट पर एक नज़र डालें कि किन कारणों से आप डेबियन-विशिष्ट सामान को निष्क्रिय करना चाहते हैं।


1
"ध्यान दें कि यह डेबियन लेन से MySQL के साथ एक समस्या नहीं होनी चाहिए, क्योंकि यह इन-स्क्रिप्ट के साथ जहाज है जो गैर-मैसिम तालिकाओं पर CHECK TABLE नहीं चलेगी।" - जुड़े हुए पेज से
d -_- b

2

MySQL 5.6+ का उपयोग करते समय, मैं संबंधित पासवर्ड का उपयोग करके mysql_config_editorउपयोगकर्ता के लिए एक प्रविष्टि बनाने के लिए कमांड का उपयोग करने की सलाह दूंगा, 'debian-sys-maint'@'localhost'जिसका अर्थ है कि पासवर्ड को सर्वर पर सादे पाठ में संग्रहीत करने की आवश्यकता नहीं है।

mysql_config_editor set --login-path=debian-sys-maint --host=localhost --user=debian-sys-maint --password

इसके बाद, डेबियन विशिष्ट कॉन्फिग फ़ाइल /etc/mysql/debian.cnfको बदल दिया जा सकता है, इसलिए उपयोगकर्ता नाम और पासवर्ड विवरण फ़ाइल में संग्रहीत नहीं होते हैं।

अंत में, MySQL के लिए logrotate फ़ाइल को बदल दें ताकि वह ~/.mylogin.cnfडिबेट विशिष्ट फ़ाइल के स्थान पर फ़ाइल में संग्रहीत लॉगिन विवरण का उपयोग करके जगह बना ले

/usr/bin/mysqladmin --defaults-file=/etc/mysql/debian.cnf

साथ में

/usr/bin/mysqladmin --login-path=debian-sys-maint

उम्मीद है की यह मदद करेगा :)

डेव


लेकिन, क्या debian-sys-maint उपयोगकर्ता का उद्देश्य इससे पूरा होगा? यह पैकेज इस उपयोगकर्ता / पासवर्ड को rootलिनक्स डोमेन में उपयोगकर्ता के रूप में कुछ सिस्टम रखरखाव करने के लिए उपयोग करने में सक्षम होना चाहिए ( rootMySQL में उपयोगकर्ता नहीं है बिना व्यवस्थापक rootके MySQL के लिए पासवर्ड दर्ज करने की आवश्यकता है ?
एंडर्स

मेरे परीक्षणों में यह मेरे लिए काम करता है, यदि आप सभी परिवर्तन करते हैं, जैसे /etc/mysql/debian.cnfकि पासवर्ड को हटाने के लिए परिवर्तन करना और सुरक्षित विवरण का उपयोग करने के लिए संदर्भ के लिए लॉगरेट फ़ाइल को बदलना। मुझे यकीन नहीं है कि अगर डेबियन-सीस-मेन्ट उपयोगकर्ता का उपयोग किसी और चीज के लिए किया जाता है, लेकिन अगर ऐसा है, तो यह आपको यह संकेत देने में मदद करेगा कि डेबियन आपकी ओर से इस उपयोगकर्ता खाते का उपयोग कहां कर रहा है।
डेव रिक्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.